更多技術好文,請關注公衆號 iOS學習社區
複製代碼
UICollectionView對象定義了集合視圖內容的可見區域。該類從UIScrollView繼承,能夠根據須要包含一個很大的滾動區域。該類從佈局對象接收佈局信息,並基於佈局信息幫助顯示數據。佈局
佈局能夠看做是UICollectionView的超能力,它用來決定集合視圖中項的位置、大小和顯示相關的屬性。佈局對象永遠不會直接接觸它管理的視圖,由於它不是真的擁有這些視圖。學習
注意:佈局方向與滾動方向垂直,佈局線是與滾動軸垂直的水平線。spa
流式佈局指的是從頂部前沿開始,沿着佈局線對Item依次進行佈局。下面這張圖形象的展現了流式佈局過程:3d
流式佈局會在移到下一條線以前安裝儘量多的集合項。代理
Line Spacing:指的是在同一個 section 中,相鄰兩行之間的間距。查看 UICollectionViewFlowLayout 的 API , 會發現裏面有一個 minimumLineSpacing 屬性,即最小行間距。若是itemSize的大小是同樣的,那麼真實的 LineSpacing 就minimumLineSpacing ,若是高度不同,那麼這個值回事上一行中Y軸值最大者和當前行中Y軸值最小者之間得高度,行中其它元素的LineSpacing 會大於 minimumLineSpacing 。code
Inter-Item Spacing:指的是沿着佈局方向,兩個Item之間的距離。查看 UICollectionViewFlowLayout 的 API 一樣會發現裏面有一個 minimumInteritemSpacing 屬性。真實的項間距會大於或等於咱們設置的 minimumInteritemSpacing 的值,由於有可能有一行只能容納下N個元素,還有M個單位的空間,這些剩餘的空間會被平局分配到元素的間距,那麼真實的InterItemSpacing值實際上是(minimumInteritemSpacing + M / (N - 1))。cdn
itemSize 表示 item(cell) 的大小。若是要指定 cell 的大小,必須在collection view delegate中實現 collectionView:layout:sizeForItemAtIndexPath: 方法,從而根據NSIndexPath參數返回對應的 CGSize 大小。注意在同一水平線上的cell是居中對齊的。對象
sectionInset表示內容區上下左右之間的內邊距。 blog
數據源對象是視圖要顯示的內容。能夠是一個數據模型對象,或者是管理集合視圖的視圖控制器。數據源的惟一要求是提供集合視圖須要的信息,例若有多少項,使用哪一個視圖來顯示這些項。每一個集合視圖必須有一個數據源對象。繼承
代理負責顯示內容,以及與內容交互相關的方面。儘管代理的主要工做是管理單元格的高亮和選擇,但也能夠經過擴展來提供額外的信息。例如,流佈局擴展基本的代理行爲來自定義佈局度量,好比單元格的尺寸和它們之間的距離。代理對象是可選的(推薦使用)。
關注公衆號,get更多技術好文