UICollectionView的使用方法與UITableView十分類似,佈局
使用UICollectionViewController要實現如下三個步驟:spa
// 一.初始化的時候設置佈局參數code
// 二.必須collectionView註冊cellorm
// 三.自定義cell對象
1.重寫init方法,在init方法中調用initWithCollectionViewLayout這個帶佈局參數的方法,方便用init方式建立一個UICollectionViewController。blog
2.建立UICollectionViewLayout佈局的時候通常用它的子類UICollectionViewFlowLayout來建立一個流水佈局。繼承
3.設置佈局對象的參數:單元格的排列方向,間距,大小圖片
1 -(instancetype)init 2 { 3 //流水佈局 4 UICollectionViewFlowLayout* layout=[[UICollectionViewFlowLayout alloc]init]; 5 6 //設置縱向排列 7 layout.scrollDirection=UICollectionViewScrollDirectionHorizontal; 8 9 //設置每一個cell間的距離 10 layout.minimumLineSpacing=0; 11 12 //設置cell大小 13 layout.itemSize=[UIScreen mainScreen].bounds.size; 14 15 //初始化一個流水佈局的collectController 16 return [self initWithCollectionViewLayout:layout]; 17 }
1.註冊單元格類型ci
2.由於UICollectionViewController的collectionView繼承自UIScrollView,因此能夠設置它的分頁,彈簧效果等屬性string
1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 4 //註冊cell, WBFeatureCell是自定義UICollectionViewCell 5 [self.collectionView registerClass:[WBFeatureCell class] forCellWithReuseIdentifier:reuseIdentifier]; 6 7 //設置分頁 8 self.collectionView.pagingEnabled=YES; 9 //設置彈簧效果 10 self.collectionView.bounces=NO; 11 //設置滾動條 12 self.collectionView.showsHorizontalScrollIndicator=NO; 13 14 }
1 循環利用的標識: static NSString * const reuseIdentifier = @"Cell";
#pragma mark <UICollectionViewDataSource> 設置數據源方法 2 /** 3 *設置分組數量 4 */ 5 - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { 6 return 1; 7 } 8 9 10 /** 11 *設置cell數量 12 */ 13 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { 14 return 4; 15 } 16 17 /** 18 *設置每個cell的內容,這個方法會調用屢次來設置每個cell 19 */ 20 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 21 WBFeatureCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath]; 22 23 //加載圖片 24 UIImage* img=[UIImage imageNamed: [NSString stringWithFormat:@"new_feature_%@",@(indexPath.row+1)]]; 25 cell.image=img; 26 27 return cell; 28 }
自定義cell 的時候要注意把內容加到contentView上面
[self.contentView addSubview:imgView];