集合視圖的創建必須指定布局,如果沒有布局,則顯示不了任何東西,所以在創建集合視圖對象之前必須先創建一個布局對象
采用系統布局類UICollectViewLayout(布局基類)
UICollectionViewFlowLayout*layout = [[UICollectionViewFlowLayout alloc]init];
設置布局對象的相關屬性
設置最小的行間距(默認是10)layout.minimumLineSpacing = 20;
設置item與item之間的間距layout.minimumInteritemSpacing = 10;
設置每個item的尺寸大小layout.itemSize = CGSizeMake((kWidth - 45) / 3, 100);
設置集合視圖的分區間隔(上,左,下,右)layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10);
設置集合視圖的滑動方向layout.scrollDirection=UICollectionViewScrollDirectionVertical;//豎向滾動
創建集合視圖
UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:[UIScreen mainScreen].bounds collectionViewLayout:layout];
集合視圖想要顯示內容,必須將cell進行注冊
[collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:string];
集合視圖包含以下代理
UICollectionViewDataSource 數據源協議
UICollectionViewDelegate 代理協議 ?(其中的方法與UITableView的代理協議相似)
布局包含的代理
UICollectionViewDelegateFlowLayout
UICollectionViewDataSource協議包含的方法(前兩個必須實現)
//設置每個分區包含的item個數
- (NSInteger)collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section;
//設置每個需要顯示的cell
- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath;
//設置包含的分區個數
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView*)collectionView;
//設置增廣視圖,即每個分區的頭視圖或者尾視圖
- (UICollectionReusableView*)collectionView:(UICollectionView*)collectionView viewForSupplementaryElementOfKind:(NSString*)kind atIndexPath:(NSIndexPath*)indexPath;
UICollectionViewDelegateFlowLayout協議包含的方法
//返回每個item的尺寸大小
- (CGSize)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath*)indexPath;
//返回視圖與屏幕邊緣的距離
- (UIEdgeInsets)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section;
//返回最小的行間距
- (CGFloat)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section;
//返回item與item之間的距離
- (CGFloat)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;
//返回分區頭視圖的尺寸大小
- (CGSize)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section;
//返回分區尾視圖的尺寸大小
- (CGSize)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section;