iOS---UICollectionView的细节

转自:https://www.jianshu.com/p/522075edbff2

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


最后效果:





猜你喜欢

转载自blog.csdn.net/iotjin/article/details/80495894