About Collection View

什么是Collection View?
  • UICollectionView類管理一個有規(guī)則的數(shù)據(jù)項的集合婿失,并且通過自定義布局把它們顯示出來。Collection Views提供的一般方法和Table Views的大致相同,區(qū)別是collection views支持多列布局晚伙。CollectionView支持的自定義布局可以用于實現(xiàn)多列的網(wǎng)格、平鋪布局俭茧、環(huán)形布局等等咆疗。如果你想,你甚至可以動態(tài)改變Collection View的布局方式母债。
  • 當你在界面中添加一個Collection View時民傻,你的App的工作就是去管理和這個collection view相關(guān)的數(shù)據(jù)。Collection View的數(shù)據(jù)是從它的數(shù)據(jù)源對象那里獲取的场斑,這個對象由你的app提供漓踢,且遵守UICollectionViewDataSource協(xié)議。
Collection View的單元格(Cell):
  • Collection view中的數(shù)據(jù)被有條理地分成不同項漏隐,便于之后被分組展示出來喧半。每一項是你所要展示的數(shù)據(jù)的一個最小單元。比如在照片App中青责,一張照片就是一項挺据。Collection View通過單元格(cell)來展示每一項內(nèi)容,這個單元格是一個實例化的UICollectionViewCell類的對象脖隶,由你的數(shù)據(jù)源完成設(shè)置并提供給Collection View扁耐。
  • 除了單元格,Collection View也可以用其他類型的視圖來展示數(shù)據(jù)产阱。這些補充的視圖可以是像頭部和足部那樣與單個的cell分開婉称,但依舊展示一些信息。對于補充視圖的支持是可選的构蹬,并且被Collection View的布局對象限制著王暗。布局對象也同時管理著這些視圖的位置。
  • 此外庄敛,在講Collection View嵌入到界面中時俗壹,你要使用UICollectionView對象的一些方法來確保所展示的項與數(shù)據(jù)源對象提供的數(shù)據(jù)匹配。因此藻烤,每當您在添加绷雏、刪除或是重新排列數(shù)據(jù)時头滔,都需要使用這個類的方法來插入、刪除和重新排列對應(yīng)的單元格涎显。你也需要使用collection view對象來管理選中項拙毫,雖然這些狀態(tài)都與它關(guān)聯(lián)的代理對象密不可分。
布局對象:
  • 布局對象是Collection View的一個非常重要的對象棺禾,它是UICollectionViewLayout的子類缀蹄。布局對象負責規(guī)定Collection View中單元格的組織方式和位置以及補充視圖。雖然布局對象規(guī)定了他們的位置膘婶,但是實際上并沒有把信息應(yīng)用在對應(yīng)的view上缺前。因為單元格的創(chuàng)建和補充視圖涉及collection view 和數(shù)據(jù)源對象之間協(xié)調(diào)的問題:實際上是Collection View把布局信息用在了View上。因此悬襟,在某種意義上衅码,布局對象就像是另一個數(shù)據(jù)源,它只提供視覺可見的信息而不是每項的數(shù)據(jù)脊岳。
  • 正常情況下你在創(chuàng)建一個Collection View時需要指定一個布局對象逝段,但是你也可以動態(tài)改變Collection View的布局。布局對象被存在CollectionViewLayout屬性中割捅。直接設(shè)置這個屬性就可以立刻更新布局奶躯,沒有人和動畫效果。如果你想改變布局的過程有動畫效果亿驾,就必須調(diào)用setCollectionViewLayout:animated:completion:方法了嘹黔。
  • 如果你想創(chuàng)建一個交互效果----一個是被首飾識別器驅(qū)動的,另一個是手勢事件莫瞬,這時就需要使用
    startInteractiveTransitionToCollectionViewLayout:completion:方法來改變布局對象儡蔓。這個方法安裝了一個中間布局對象,目的是通過首飾識別或事件處理的代碼來跟蹤變換的過程疼邀。當你的事件處理代碼確定變換已經(jīng)完成喂江,就會調(diào)用finishInteractiveTransition or cancelInteractiveTransition方法來移除中間布局對象然后安裝預(yù)期目標的布局對象。
創(chuàng)建單元格和補充視圖:
  • Collection view的數(shù)據(jù)源對象提供了每項的內(nèi)容和展示這些內(nèi)容的視圖旁振。當collection view第一次加載內(nèi)容時获询,它會向它的數(shù)據(jù)源要每一個可見項的視圖。為了簡化代碼創(chuàng)建的過程规求,collection view要求你總是要排列視圖(重用機制)筐付。你是用的是哪一個取決于哪一種視圖已經(jīng)被請求了卵惦。
    使用dequeueReusableCellWithReuseIdentifier:forIndexPath:方法來獲取collection view中的一個單元格阻肿。
  • 使用dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath:方法來獲取布局對象請求的補充視圖。
  • 在調(diào)用這些方法之前沮尿,你必須告訴collection view如果之前并沒有創(chuàng)建丛塌,該如何創(chuàng)建對應(yīng)的視圖较解。為此,你必須在collection view中注冊一個類或者一個nib文件赴邻。比如在注冊單元格的時候印衔,你是用registerClass:forCellWithReuseIdentifier:或者 registerNib:forCellWithReuseIdentifier:方法。對于注冊過程中的一步姥敛,你需要定義一個重用標志符來區(qū)分視圖的作用奸焙。這個字符串和之后在排列視圖時將要使用的字符串要一致。
  • 在代理方法中排列好對應(yīng)的視圖之后彤敛,設(shè)置它的內(nèi)容然后把視圖返回給collection view來使用与帆。collection view從布局對象中獲取到布局信息之后,把信息應(yīng)用到視圖上然后展示出來墨榄。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玄糟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子袄秩,更是在濱河造成了極大的恐慌阵翎,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件之剧,死亡現(xiàn)場離奇詭異郭卫,居然都是意外死亡,警方通過查閱死者的電腦和手機背稼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門箱沦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人雇庙,你說我怎么就攤上這事谓形。” “怎么了疆前?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵寒跳,是天一觀的道長。 經(jīng)常有香客問我竹椒,道長童太,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任胸完,我火速辦了婚禮书释,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赊窥。我一直安慰自己爆惧,他們只是感情好,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布锨能。 她就那樣靜靜地躺著扯再,像睡著了一般芍耘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上熄阻,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天斋竞,我揣著相機與錄音,去河邊找鬼秃殉。 笑死坝初,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的钾军。 我是一名探鬼主播刻获,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼纽疟,長吁一口氣:“原來是場噩夢啊……” “哼厌衙!你這毒婦竟也來了兜粘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤砸泛,失蹤者是張志新(化名)和其女友劉穎十籍,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唇礁,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡勾栗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了盏筐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片围俘。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖琢融,靈堂內(nèi)的尸體忽然破棺而出界牡,到底是詐尸還是另有隱情,我是刑警寧澤漾抬,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布宿亡,位于F島的核電站,受9級特大地震影響纳令,放射性物質(zhì)發(fā)生泄漏挽荠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一平绩、第九天 我趴在偏房一處隱蔽的房頂上張望圈匆。 院中可真熱鬧,春花似錦捏雌、人聲如沸跃赚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽来累。三九已至砚作,卻和暖如春窘奏,著一層夾襖步出監(jiān)牢的瞬間嘹锁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工着裹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留领猾,地道東北人。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓骇扇,卻偏偏與公主長得像摔竿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子少孝,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

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

  • 翻譯自“Collection View Programming Guide for iOS” 0 關(guān)于iOS集合視...
    lakerszhy閱讀 3,878評論 1 22
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,321評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫继低、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,124評論 4 61
  • (一) 周日下午在圖書館組織了一次模擬群面稍走,面試者7人袁翁,考官4人,圍觀2人婿脸。 時間安排:每人2分鐘自我介紹+10...
    小八汪閱讀 1,070評論 1 4
  • 多年了 只要 光膀午睡 就有 美麗而浮躁的夢 一樹一樹的暗香 一朵一朵的淡黃 半瞎的外婆 反復(fù)說著 桂花開了 天涼...
    第一閑人閱讀 157評論 0 2