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

浙公网安备 33010602011771号