Facebook-ComponentKit教程(二)HelloWorld

"ComponentKit"是一個非常強(qiáng)大的描述性UI框架,由于國內(nèi)教程不多在這里簡單做個教程,拋磚引玉,希望未來能有更好更全面的教程。

看到這篇教程的朋友應(yīng)該已經(jīng)創(chuàng)建了一個集成了ComponentKit以及可以通過編譯的空白工程,如果你還沒有甚至也不知道怎么創(chuàng)建的話可以參考上一篇教程:

Facebook-ComponentKit教程(一)準(zhǔn)備工作

首先打開之前的工程,command+N 新建一個繼承自UICollectionViewController 的文件,把它命名為CollectionViewController 。*不要忘記將.m文件改成.mm


創(chuàng)建CollectionViewController

打開Main.storyboard,刪掉原來的ViewController拖入一個CollectionViewController,在Custom Class 中將Class 指定成CollectionViewController


storyboard

不廢話,回到CollectionViewController.mm中讓我們開始擼代碼!


interface

首先確認(rèn)協(xié)議CKComponentProvider 它就跟我們的CollectionViewDataSource 是一個概念,但是更簡單!實(shí)現(xiàn)這個協(xié)議的類就是組件的數(shù)據(jù)提供者(即數(shù)據(jù)源)。翻譯成UIKit的那一套就是:

self.collectionView.dataSource = self;


viewDidLoad

其次在ViewDidLoad中新建一個SizeRangeProvider它是用來在后期幫助我們調(diào)整Size的,他的意思類似UIKit中的contentSize 不過目前用不上,先不管他。

然后是Configuration,它用來告訴DataSource誰來提供component,誰來提供size。

最后是重中之重的DataSource!?。?這個DataSource用來控制整個數(shù)據(jù)流。所謂數(shù)據(jù)驅(qū)動,指的就是這玩意驅(qū)動了。。。

Changeset 是配合DataSource使用的,每次數(shù)據(jù)有更新會創(chuàng)建新的Changeset,Changeset 用來描述增加那些Cells,刪除哪些Cells 還是更新那些Cells,然后“告訴”

DataSource應(yīng)用Changeset以及使用同步還是異步模式更新。

翻譯過來就是 :

[self.collectionView reloadData];


配置Cell

最后說下這幾個方法,ComponentForModel: context: 相當(dāng)于UIKit中的

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

他告訴ComponentKit 應(yīng)該顯示那個Component,這里我們返回一個最簡單的Label(這里你可能會覺得這里的語法很奇怪,沒關(guān)系,語法只是媒介,強(qiáng)者無門派。往后看你肯定能學(xué)會的,相信我)他的顯示內(nèi)容是之前我們傳過來的Model,暨@"Hello World"的字符串。顏色是黑色,字號是40,左對齊。

collectionView的代理方法還會詢問我們Cell的大小,直接用dataSource的 sizeForItemAtIndexPath: 交給DataSource自己去算就好了。

別忘了在willDisplayCell 和 didEndDisplayCell 也告訴dataSource我要顯示Cell 和我顯示完Cell了!?

OK大功告成。再次運(yùn)行你會看到像我這里一樣的一個只有一個Cell元素的Collectionview。而這里的數(shù)據(jù)模型就是Hello world。不過對于這種簡單元素的界面,使用ComponentKit有點(diǎn)殺雞焉用宰牛刀的意思,感興趣的朋友可以看一下 Texture(有時間的話我也寫一篇教程)。但是如果是復(fù)雜的Feed流那你就爽上天際了。待有時間我會寫一篇教程來實(shí)現(xiàn)一個簡單的微博首頁。


運(yùn)行效果


以上,感謝。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容