tvOS中動態(tài)TopShelf的使用方法

全新的tvOS中引進了一個很重要的東東苞轿,叫 top sheft 耍铜,top shelf 是什么呢越妈?先上圖

有圖好說話错沃,簡單來說,top shelf 就是一個可以像App Store 一樣用卡牌style向用戶進行內容推薦的這么一個東東雀瓢,當然枢析,不僅僅可以顯示推薦內容,動態(tài)的top shelf 還可以顯示用戶最近瀏覽刃麸,收藏等醒叁,如果是游戲的話,可以顯示存檔信息泊业。選中某個卡片把沼,點擊play按鍵,即可直接進行內容瀏覽或者開始游戲吁伺,非常方便饮睬。

Top shelf大大增加了應用的存在感,給app的交互帶來新的方式箱蝠,然而一切并沒有開發(fā)者心中想的那么美好:只有位于列表第一行的app才有資格顯示top shelf续捂,其他的app都只能顯示一個孤零零的圖標垦垂。怎樣才能讓用戶心甘情愿地把自己的app放在第一行呢宦搬,你們自己想去吧,反正我是不用管這事劫拗,嘿嘿间校。

另外需要說明的是,tvOS沒有本地持久化存儲页慷,因此憔足,所有的數據都要從服務器獲取,so酒繁,使用cloudKit或者自己搭建服務器吧滓彰。

廢話不多說,下面開始教大家使用 top shelf州袒。

靜態(tài)圖像

這個沒什么好說的揭绑,把圖片直接拖進assets里面就OK了,注意分辨率一定要是1920x720郎哭。

動態(tài)顯示

動態(tài)顯示是個大頭他匪,沒有誰愿意看著一成不變的圖片放在首頁上亮瞎狗眼,下面開始隆重介紹動態(tài)顯示的 top shelf夸研。

  1. 創(chuàng)建一個tvOS的app邦蜜,這很簡單,不介紹了亥至。

  2. 創(chuàng)見完畢后悼沈,File->New->Target贱迟,選擇tvOS下面的Application Extension -> TV Services Extension


  3. 輸入名稱,建議使用topshelf就OK


  4. 點擊 Activate


  5. 這時主項目中會出現一個名稱為topshelf的文件夾絮供,里面有一個叫做ServiceProvider的文件关筒,編輯它的代碼如下:

import Foundation
import TVServices

class ServiceProvider: NSObject, TVTopShelfProvider {
    
    override init() {
        super.init()
    }
    
    var topShelfStyle: TVTopShelfContentStyle {
        return .Sectioned //
    }
    
    var topShelfItems: [TVContentItem] {
        let ID = TVContentIdentifier(identifier: "identifier1", container: nil)!
        let Item = TVContentItem(contentIdentifier: ID)!
        var Items = [TVContentItem]()
        
        for (var i = 0; i < 8; i++)
        {
            let identifier = TVContentIdentifier(identifier: "identifier2", container: ID)!
            let contentItem = TVContentItem(contentIdentifier: identifier )!
            
            if let url = NSURL(string: ["https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=1416240957,410020165&fm=58","https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=216248366,1253432148&fm=58","https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=3314685794,229436694&fm=58","https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=1316079114,162208842&fm=58","https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=470891324,227323529&fm=58","https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=3495368848,1024610533&fm=58","https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=3305383698,853442007&fm=58","https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1778394871,4237479606&fm=58"][i])
            {
                contentItem.imageURL = url
                contentItem.imageShape = .Poster
                contentItem.title = ["星球大戰(zhàn)","老炮兒","尋龍訣","我滴個神啊","神探夏洛克","夏洛特煩惱","游戲","不可思異"][i]
                contentItem.displayURL = NSURL(string: "hehe://\(i)")
                contentItem.playURL = NSURL(string: "hehe://\(i)")
            }
            Items.append(contentItem)
        }
        
        Item.title = "熱門電影"
        Item.topShelfItems = Items
        
        return [Item]
    }
}

對上面的程序的解釋

  1. topShelfStyle : 控制顯示的方式,有兩種杯缺,.Inset.Sectioned 蒸播,前者會讓卡片鋪滿視圖。
  2. topShelfItems : 它的getter控制top shelf 顯示的內容萍肆,參數如下:
  • ID : 一個獨一無二的ID
  • imageURL : 圖片在網絡上的地址
  • imageShape : 圖片形狀袍榆,有三種,.Poster,.Square,.HDTV,圖片按照順序逐漸變大
  • title : 每張卡片對應的標題塘揣,標題只會顯示一個
  • displayURL : 用戶點擊聚焦的卡片時發(fā)送給主app的URL
  • playURL : 用戶點擊播放按鈕時發(fā)送給主app的URL

此時運行程序包雀,我們應該就能看見效果了,如下圖亲铡,如果你看不到圖片才写,可能是圖片網址已經失效,可以嘗試更換一個圖片地址試試奖蔓。


好了赞草,現在我們就可以通過top shelf來向用戶展示數據了。但是還是有個問題吆鹤,top shelf 是可以點擊的厨疙,但是我們無論用大力金剛手還是粗壯的麒麟臂來點這些圖片,卻什么都沒有發(fā)生疑务,這是因為我們沒有加入 deep link沾凄,下面開始加入deep link。

在主app的info中添加以下項目

好了知允,現在點擊某個卡片元素就能直接打開app了撒蟀,在app中獲取打開的是哪個卡片的辦法:在appdelegate中添加下面這個函數

func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
    //url即為傳進來的信息,進行解析并執(zhí)行相應的操作
    return true
}

上面的函數對url進行解析并執(zhí)行相應的操作即可温鸽,這里就不再往下寫了保屯。

如此,一個簡單的top shelf就制作好了嗤朴,第一次發(fā)文配椭,求贊!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末雹姊,一起剝皮案震驚了整個濱河市股缸,隨后出現的幾起案子,更是在濱河造成了極大的恐慌吱雏,老刑警劉巖敦姻,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘾境,死亡現場離奇詭異,居然都是意外死亡镰惦,警方通過查閱死者的電腦和手機迷守,發(fā)現死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旺入,“玉大人兑凿,你說我怎么就攤上這事∫瘃” “怎么了礼华?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拗秘。 經常有香客問我圣絮,道長,這世上最難降的妖魔是什么雕旨? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任扮匠,我火速辦了婚禮,結果婚禮上凡涩,老公的妹妹穿的比我還像新娘棒搜。我一直安慰自己,他們只是感情好突照,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布帮非。 她就那樣靜靜地躺著氧吐,像睡著了一般讹蘑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上筑舅,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天座慰,我揣著相機與錄音,去河邊找鬼翠拣。 笑死版仔,一個胖子當著我的面吹牛,可吹牛的內容都是我干的误墓。 我是一名探鬼主播蛮粮,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谜慌!你這毒婦竟也來了然想?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤欣范,失蹤者是張志新(化名)和其女友劉穎变泄,沒想到半個月后令哟,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡妨蛹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年屏富,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛙卤。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡狠半,死狀恐怖,靈堂內的尸體忽然破棺而出颤难,到底是詐尸還是另有隱情典予,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布乐严,位于F島的核電站瘤袖,受9級特大地震影響,放射性物質發(fā)生泄漏昂验。R本人自食惡果不足惜捂敌,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望既琴。 院中可真熱鬧占婉,春花似錦、人聲如沸甫恩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽磺箕。三九已至奖慌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間松靡,已是汗流浹背简僧。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留雕欺,地道東北人岛马。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像屠列,于是被迫代替她去往敵國和親啦逆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內容