UITableView和UICollectionView(UICollectionViewCell/UICollectionViewLayout/UICollectionReusableView)

一个是表视图 就是只有一列
另一个是集合视图 可以有多列

UICollectionView默认没有表头, UITableView: 有表头和表尾;
UICollectionView的区里面是项Item, UITableView:区里面是单元格Cell
UICollectionView布局使用UICollectionViewLayOut的子类(UICollectionViewFlowLayOut 流式布局:流式布局的特点就是会自动根据屏幕的宽度适当的显示列数,如果屏幕款显示的列数可能就多,例如iphone 6s Plus, 如果屏幕相对较窄,显示的列数则较少,例如 iphone 4s)
UICollectionView和UITableView都是分区(段)的.

UICollectionView 的行数是不能显式指定的,行数是系统自动计算出来的,行数的计算因素有: Item 宽度 和 列间隙 共同决定.
UICollectionView 滚动方向与Item的排列方向
滚动方向不同,每个Item的出现顺序也不同;
滚动方向如果是垂直方向,那么Item是横着排列,先排第一行,如果一行排列不完,就继续排第二行;
滚动方向如果是水平方向,那么Item是垂直排列,先排第一列,如果一列排列不完,就继续排序第二列,如果有多个分区,每个分区的第一项肯定再第一行,而不会排在排在上一个分区的尾部,而是另起一列
UICollectionViewScrollDirectionVertical(垂直方向) UICollectionViewScrollDirectionHorizontal (水平方向)

UICollectionViewFlowLayout: UICollectionViewLayout //流式布局
UICollectionView: UIScrollView

UICollectionViewFlowLayout 的属性设置:

- (void)viewDidLoad {
    [super viewDidLoad];
    
    _dataSource = [NSArray arrayWithObjects:@"0", @"1", @"2", @"3", @"4", @"5", @"6", @"7", nil];
    
    UICollectionViewFlowLayout * layout = [[UICollectionViewFlowLayout alloc] init];
    layout.scrollDirection = UICollectionViewScrollDirectionVertical;
    layout.itemSize = CGSizeMake(96, 96);
    layout.minimumInteritemSpacing = 20.0;
    layout.minimumLineSpacing = 20.0;
    layout.headerReferenceSize = CGSizeMake(100.0, 50.0);// 指定section的头部高度
    layout.footerReferenceSize = CGSizeMake(100.0, 50.0);
    layout.sectionInset = UIEdgeInsetsMake(0, 10.0, 0, 10.0); // 段的内边距 padding(上下左右)
    UICollectionView * collectionView = [[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:layout];
    [collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"];
    collectionView.delegate = self;
    collectionView.dataSource = self;
    
    [self.view addSubview:collectionView];
}

UIView, UITableView, UICollectionView有什么区别?
UICollectionview 是运用一个灵活多变的布局呈现一系列有序数据项的一种方法。collection view最通常的使用使用像网格状排列来呈现数据项,但是 iOS 的 collection view 的能力不仅限于行和列。使用 collection views, 视觉元素的精确布局可通过子类化定义并被动态改变。所以你可以实现网格,栈,圆形布局,动态改变布局,或任何你可以想象的排列布局。

UICollectionView和UICollectionViewCell的区别?

UICollectionViewCell和UICollectionReusableView的区别?
UICollectionViewCell对象显示单个数据的内容
当该项在集合视图的可见边界内时。
您可以按原样使用这个类,或者子类它来添加
属性和方法。单元格的布局和表示是
由集合视图及其相应的布局对象管理。
UICollectionReusableView类定义所有单元格的行为
以及由集合视图呈现的补充视图,可重用视图
之所以如此命名,是因为集合视图将它们放在重用队列上。而不是在它们滚动出可见区域时删除它们界限。这样的视图可以被检索并重新调整用途不同的内容集。
因此区别在于,UICollectionViewCell表示单个数据项的内容,UICollectionReusableView类定义了集合视图显示的所有单元格和补充视图的行为。

有用的资料(含代码)

https://www.cnblogs.com/salam/p/5192576.html
https://www.jianshu.com/p/5d54c87a7d8b
https://www.jianshu.com/p/4863a25d3b84

posted @ 2020-12-12 01:02  EvanMeetTheWorld  阅读(103)  评论(0)    收藏  举报