歸納筆記010:UICollectionView

 UICollectionView支持的屬性

從IB的屬性面板中課件,UICollectionView支持的屬性大致如下:

(1)    Layout:該屬性用於指定UICollectionView所用的佈局對象,它可支持Flow、Custom兩個屬性值。其可設置的屬性如下:

1)           ScrollDirection:用於控制單元格之間的最小行距。

2)           minimumLineSpacing:用於控制單元格之間的最小行距。

3)           minimumInteritemSpacing:用於控制單元格之間的最小間距。

4)           itemSize:該屬性用於設置單元格的寬度和高度。

5)           sectionInset:該屬性用於設置各分區上、下、左、右空白區域的大小。

6)           headerRefernceSize:設置各分區的頁眉控件的大小。

7)           footerRefernceSize:設置各分區的頁腳控件的大小。

(2)    Scoll Direction:該屬性實際上來自UICollectionViewLayout佈局對象,如果將Layout屬性設爲Custom屬性值,該下拉屬性選擇器就會消失。該屬性設置控件的滾動方向,它支持垂直滾動和水平滾動。

(3)    Accessories:該屬性指定是否顯示UICollectionView分區的頁眉和頁腳。


使用UICollectionViewDelegateFlowLayout定製佈局

如果直接使用UICollectionViewFlowLayout佈局對象來管理UICollectionView的所有單元格,那麼這些單元格的大小、單元格之間的間距和行距都是相同的。當UICollectionView管理的所有單元格控件的大小本來就相同時,直接使用UICollectionViewFlowLayout即可實現非常整齊的網格效果。

如果需求是單元格的大小時參差不齊的,可用UICollectionViewDelegateFlowLayout協議進行實現:

(1)   -collectionView:layout:sizeForItemAtIndexPath:該方法返回的CGSize對象將控制指定NSIndexPath對應的單元格大小。

(2)   -collectionView:layout:insetForSectionAtIndex:該方法返回的UIEdgeInsets對象將控制指定分區上、下、做、有空白區域的大小。

(3)   -collectionView:layout:minimumLineSpacingForSectionAtIndex:該方法返回的長度值將控制指定分區內最小的行間距。

(4)   -collectionView:layout:minimumInteritemSpacingForSectionAtIndex:該方法返回的長度值將控制指定分區內最小的列間距。

(5)   -collectionView:layout:reterenceSizeForHeaderInSection:該方法返回的CGSize將控制指定分區頁眉控件的大小。

(6)   -collectionView:layout:reterenceSizeForFooterInSection:該方法返回的CGSize將控制指定分區頁腳控件的大小。

    如果需要分別控制UICollectionView內各單元格的大小,需要讓UICollectionView對應的控制器實現UICollectionViewDelegateFlowLayout協議,並根據需要讓控制器類實現上面協議中特定的方法。


擴展UICollectionViewLayout定製佈局

如果採用UICollectionViewFlowLayout管理UICollectionView中單元格的佈局,所有單元格總會分佈成網格的形式。如果希望UICollectionView以更復雜、更靈活的方式對單元格進行佈局,可以通過繼承UICollectionViewLayout,實現自定的佈局管理器來實現。

繼承UICollectionViewLayout是,通常重寫如下方法:

(1)    -prepareLayout:開始佈局時調用該方法執行準備工作。

(2)    -layoutAttributesForElementsInRect:該方法的返回值控制指定NSRect區域內所有單元格的大小和位置等佈局信息。

(3)    -layoutAttributesForItemAtIndexPath:該方法的返回值控制指定NSIndexath對應的單元格的大小和位置等佈局信息。

(4)    -layoutAttributesForSupplementaryViewOfKind:atIndexPath:該方法的返回值控制指定分區的頁眉控件、頁腳控件的大小位置等佈局信息。

(5)    -layoutAttributesForDecorationViewOfKind:atIndexPath:該方法的返回值控制指定分區裝飾控件的大小位置等佈局信息。

如果希望控制UICollectionView中單元格顯示、隱藏時的動畫效果,可重寫方法進行實現。


多分區網絡

與UITableView類似的是,UICollectionView同樣支持多分區,如果需要實現多分區UICollectionView控件,則需要重寫UICollectionViewDataSource協議的numberOfSectionsInCollectionView:方法,該方法的返回值控制該UICollectionView可以包含多個分區。

如果程序需要爲各分區添加頁眉控件和頁腳控件,還需要重寫而UICollectionViewDataSource協議中的-collectionView:viewForSupplementaryElementOfKind:atIndexPath:方法,該方法返回的控件將作爲各分區的頁眉、頁腳控件。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章