UICollectionView
首先说到UICollectionViewFlowLayout 肯定是少不了UICollectionView的啦,
为什么我要讲UICollectionView呢?
因为最近我做的界面都是要用到collectionView,对collectionView理解深了一些,而且我还发现了,现在很多项目都会用到collectionView,而且都是一些比较出名的app 例如:淘宝、京东,等等这些商城app,都是用到collectionView来做主页的。
当你collectionView用的好,你是可以完全代替tableView。但是,能用tableView就肯定用tableView啦,因为collectionView相当于来说是比较麻烦的....
为什么呢?因为UITableView的cell是系统自动布局好的,不需要我们布局。但UICollectionView的cell是需要我们自己布局的。所以我们在创建UICollectionView的时候必须传递一个布局参数,系统提供并实现了一个布局样式:流水布局(UICollectionViewFlowLayout)
UICollectionViewFlowLayout
tableView与collectionView的创建
![](https://img.haomeiwen.com/i6858411/dc740ada4769d341.jpeg)
![](https://img.haomeiwen.com/i6858411/a2f0f62a0f92cae9.jpeg)
他们的所在区别就是多了一个flowLayout。flowLayout就是用来布局collectionView的,上面已经提到了,tableView是系统自动布局好的,collectionView是要我们自己布局的。而flowLayout就是我们用来布局的类,它继承于UICollectionViewFlowLayout。
引导页制作
1.把UICollectionView的每个cell的尺寸设置为跟屏幕一样大;
layout.itemSize = [UIScreen mainScreen].bounds.size;
2.设置为水平滚动方向,设置水平间距为0.
// 设置间距layout.minimumLineSpacing =0;layout.minimumInteritemSpacing =0;
// 设置滚动方向(默认垂直滚动)layout.scrollDirection=UICollectionViewScrollDirectionHorizontal;
// 开启分页self.collectionView.pagingEnabled =YES;// 隐藏水平滚动条self.collectionView.showsHorizontalScrollIndicator =NO;// 取消弹簧效果self.collectionView.bounces =NO;
![](https://img.haomeiwen.com/i6858411/ddac89eed5431971.jpeg)
普通的表格布局
![](https://img.haomeiwen.com/i6858411/6ba55aebe86e335c.png)
self.flowLayout.sectionInset = UIEdgeInsetsMake(5, 5, 5, 5);//section之间的间距
self.flowLayout.minimumInteritemSpacing = 5; // cell的纵向间距
self.flowLayout.minimumLineSpacing = 5;// cell的横向间距
![](https://img.haomeiwen.com/i6858411/1be7cce55bf95655.png)
![](https://img.haomeiwen.com/i6858411/93d1574f8ee8e159.jpeg)
特殊表格布局
需要自定义一个类,继承于UICollectionViewFlowLayout
初始化方法:
![](https://img.haomeiwen.com/i6858411/7a3006e6b29af72a.png)
![](https://img.haomeiwen.com/i6858411/8c179a2b2055bbde.png)
![](https://img.haomeiwen.com/i6858411/8bf2a5fba45974b0.png)
先看看效果图
![](https://img.haomeiwen.com/i6858411/baf94a9531c38023.jpeg)
标签的cell 上面的layout已经布局好了,如果长度超过屏幕长度的话,就会自动换行。
每个标签cell的size
![](https://img.haomeiwen.com/i6858411/092b56cc7102214e.png)
![](https://img.haomeiwen.com/i6858411/6174a77b2a3fb889.png)
头部的cell : “已选择标签”、“擅长话题”、“特色语言”、“更多”的size
![](https://img.haomeiwen.com/i6858411/7e286b69c62d5c5e.png)
把他的size设置成这样就可以了,不用tableViewCell里面镶嵌一个collectionView那么复杂。
如果自定义layout,会发现一个问题,就是设置不到header和footer
如果需要 在prepareLayout加上
![](https://img.haomeiwen.com/i6858411/b6a1b3907bc6bd85.png)
这样就可以用了。不加上的话是无效的。因为自定义的layout 你即使注册了rusableView 也不会走代理方法的。
网友评论