IGListKit探索 - 1 基本使用

之前一直覺得Instagram的iOS APP首頁的流暢度非常不錯。現(xiàn)在他們開源了這個IGListKit框架现横,總要好好研究研究奋构。

IGListKitDemo.png

核心架構(gòu)比較清晰。每一個條目就是一種sectionController(如圖黃色框內(nèi))晌该。每個section對應(yīng)一個Item肥荔。具體結(jié)構(gòu)如下

81DB540E-36D4-4D3F-8651-A8EDC7A6BDC9.png

框架的文檔很詳細但是是英文版的绿渣。

# Latest release of IGListKit
pod 'IGListKit', '~> 2.0.0'

# Use the master branch (we use this at Instagram)
pod 'IGListKit', :git => 'https://github.com/Instagram/IGListKit.git', :branch => 'master'

使用很簡單。新建ViewController和someSectionController 繼承
IGListSectionController并遵守IGListSectionType次企。

viewController中設(shè)置UI

let layout = UICollectionViewFlowLayout()
let collectionView = IGListCollectionView(frame: .zero, collectionViewLayout: layout)

let updater = IGListAdapterUpdater()
let adapter = IGListAdapter(updater: updater, viewController: self, workingRangeSize: 0)
//set方法調(diào)用數(shù)據(jù)源更新操作 把objects(for listAdapter: IGListAdapter) -> [IGListDiffable] 方法設(shè)置的數(shù)據(jù)傳給cectionController
adapter.collectionView = collectionView

接下來設(shè)置數(shù)據(jù)怯晕,根據(jù)預(yù)先分好的組。

func objects(for listAdapter: IGListAdapter) -> [IGListDiffable] {
  // this can be anything!
  return [ "Foo", "Bar", 42, "Biz" ]
}

func listAdapter(_ listAdapter: IGListAdapter, sectionControllerFor object: Any) -> IGListSectionController {
  //根據(jù)需求返回不同的sectionController
  return someSectionController()
}
//沒有數(shù)據(jù)時缸棵,顯示的自定義view
func emptyView(for listAdapter: IGListAdapter) -> UIView? {
  return nil
}

- (void)updateBackgroundViewWithItemCount:(NSUInteger)itemCount {
    UIView *backgroundView = [self.dataSource emptyViewForListAdapter:self];
    // don't do anything if the client is using the same view
    if (backgroundView != _collectionView.backgroundView) {
        // collection view will just stack the background views underneath each other if we do not remove the previous
        // one first. also fine if it is nil
        [_collectionView.backgroundView removeFromSuperview];
        _collectionView.backgroundView = backgroundView;
    }
    _collectionView.backgroundView.hidden = itemCount > 0;
}

//someSectionController中設(shè)置數(shù)據(jù)
  func numberOfItems() -> Int {
        return 4
    }
//section中每一行高
    func sizeForItem(at index: Int) -> CGSize {
        return CGSize(width: collectionContext!.containerSize.width, height: 105)
    }

//collectionContext屬性 獲取到objects(for listAdapter: IGListAdapter) -> [IGListDiffable]  中設(shè)置的data
    func cellForItem(at index: Int) -> UICollectionViewCell {
        let cell = collectionContext!.dequeueReusableCell(of: LabelCell.self, for: self, at: index) as! LabelCell
        let section = collectionContext!.section(for: self)
        cell.label.text = "Section \(section), cell \(index)"
        return cell
    }

    func didUpdate(to object: Any) {}

    func didSelectItem(at index: Int) {}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舟茶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子堵第,更是在濱河造成了極大的恐慌吧凉,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件踏志,死亡現(xiàn)場離奇詭異阀捅,居然都是意外死亡,警方通過查閱死者的電腦和手機针余,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門饲鄙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人圆雁,你說我怎么就攤上這事忍级。” “怎么了伪朽?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵轴咱,是天一觀的道長。 經(jīng)常有香客問我烈涮,道長朴肺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任坚洽,我火速辦了婚禮戈稿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘讶舰。我一直安慰自己鞍盗,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布绘雁。 她就那樣靜靜地躺著橡疼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪庐舟。 梳的紋絲不亂的頭發(fā)上欣除,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音挪略,去河邊找鬼历帚。 笑死滔岳,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挽牢。 我是一名探鬼主播谱煤,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼禽拔!你這毒婦竟也來了刘离?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后雹顺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡恼除,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了曼氛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豁辉。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖舀患,靈堂內(nèi)的尸體忽然破棺而出徽级,到底是詐尸還是另有隱情,我是刑警寧澤构舟,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布灰追,位于F島的核電站堵幽,受9級特大地震影響狗超,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜朴下,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一努咐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧殴胧,春花似錦渗稍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至灸姊,卻和暖如春拱燃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背力惯。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工碗誉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留召嘶,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓哮缺,卻偏偏與公主長得像弄跌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子尝苇,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,525評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫铛只、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,033評論 4 62
  • 我們是初二下半學(xué)期在一起的糠溜,沒錯格仲,我是早戀,這也是初戀 诵冒。和很多人一樣凯肋,回憶起初戀時嘴角會不自覺的上揚,我的初戀滿...
    喵小姐123閱讀 437評論 1 1
  • 沒有堅持每天寫作铁蹈,哪怕是隨筆宽闲,很是愧疚,不為旁人握牧,僅為自己的言辭乏味…… 很多年了容诬,總是計劃努力,計劃旅行沿腰,...
    香蕉啊你個不吶吶閱讀 285評論 0 0
  • 無法拒絕別人览徒,卻很大程度傷害自己。到頭來颂龙,苦了自己习蓬,卻不一定討好了別人。多么痛的領(lǐng)悟措嵌,歌詞體現(xiàn)的更徹底躲叼,雖聽了好多...
    小女來浪浪閱讀 247評論 0 0