iOS中使用UICollectionView的細節

hither發表於2017-12-13

iOS中使用UICollectionView

ViewController.m中:
#import "ViewController.h"
//匯入我們自定義的Cell
#import "myCollectionViewCell.h"

#define kScreenW [UIScreen mainScreen].bounds.size.width
#define kScreenH [UIScreen mainScreen].bounds.size.height

@interface ViewController ()<UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>

@end

@implementation ViewController
//將重用識別符號定義成一個全域性變數
static NSString *cell_identy = @"cell";

- (void)viewDidLoad {
    [super viewDidLoad];
   
    //建立佈局物件
    UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
    
    //設定佈局屬性
    
    //1.單元格大小  --> 決定 行/列 的單元格的個數
    layout.itemSize = CGSizeMake((kScreenW-40)/3.0, 136);
    //layout.itemSize = CGSizeMake(145, 150);
    
    //2.設定最小間隙
    /**
     *  滑動方向垂直:水平間隙由單元格寬度和集合檢視寬度決定 最小不能低於最小間隙
     垂直間隙就是最小垂直間隙
     
     水平方向滑動:垂直間隙由單元格高度和集合檢視高度決定 最小不能低於最小間隙
     水平間隙就是最小水平間隙
     */
    
    //垂直方向間隙 (間隙本身是水平的)
    layout.minimumLineSpacing = 5;
    //水平方向間隙 (間隙本身是垂直的)
    layout.minimumInteritemSpacing = 1;
    
    //3.設定滾動方向(向哪滑動)
    /**
     *  UICollectionViewScrollDirectionVertical,垂直
     UICollectionViewScrollDirectionHorizontal 水平
     */
    layout.scrollDirection = UICollectionViewScrollDirectionVertical;
    
    //4.頭/尾檢視尺寸
    //    layout.headerReferenceSize = CGSizeMake(0, 0);
    //    layout.footerReferenceSize = CGSizeMake(0, 0);
    
    
    //集合檢視
    
    //I.同步佈局類物件建立
    UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(0, 64, kScreenW, kScreenH-64) collectionViewLayout:layout];
    
    //II.屬性
    collectionView.delegate = self;
    
    collectionView.dataSource = self;
    
    [self.view addSubview:collectionView];
    
    collectionView.backgroundColor = [UIColor whiteColor];
    // 這句話的意思是為了 不管集合檢視裡面的值 多不多  都可以滾動 解決了值少了 集合檢視不能滾動的問題
    collectionView.alwaysBounceVertical = YES;
    //註冊單元格
    
    /**
     *  將UICollectionViewCell類的單元格 加上 cell_identy複用標記
     */
    [collectionView registerClass:[myCollectionViewCell class] forCellWithReuseIdentifier:cell_identy];
    //這步很重要  不然沒法載入出你自定義的cell  類比UITableView中自定義cell  也需要這樣註冊
    UINib *nib = [UINib nibWithNibName:@"myCollectionViewCell"
                                bundle: [NSBundle mainBundle]];
//collectionView宣告時  也需要在這裡這樣註冊
    [collectionView registerNib:nib forCellWithReuseIdentifier:cell_identy];
}

#pragma mark --UICollectionViewDataSource

//返回item個數
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    
    return 6;
}

//返回單元格  複用
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    
    //使用註冊單元格
    
    myCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cell_identy forIndexPath:indexPath];
    
    cell.backgroundColor = [UIColor clearColor];
   
    //載入圖片
    cell.imageView.image = [UIImage imageNamed:@"fe8c42e67680bbb387e7f68b90c641bd.jpg"];
    cell.imageView.layer.cornerRadius = 50;
    cell.imageView.clipsToBounds = YES;
    //設定label文字
    cell.label.text = [NSString stringWithFormat:@"我是第%ld個cell",indexPath.row+1];
    return cell;
    
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
    NSLog(@"%ld",indexPath.row);
}

#pragma mark --UICollectionViewDelegateFlowLayout

//邊緣大小
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{
    return UIEdgeInsetsMake(5, 5, 5, 5);
}

//定義每個UICollectionView 的大小

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end


複製程式碼

最後效果:

iOS中使用UICollectionView的細節

相關文章