iOS CodingIOS知识积累

UICollectionViewFlowLayout

2017-07-17  本文已影响0人  JiabinGao

UICollectionView

首先说到UICollectionViewFlowLayout  肯定是少不了UICollectionView的啦,

为什么我要讲UICollectionView呢?

因为最近我做的界面都是要用到collectionView,对collectionView理解深了一些,而且我还发现了,现在很多项目都会用到collectionView,而且都是一些比较出名的app  例如:淘宝、京东,等等这些商城app,都是用到collectionView来做主页的。

当你collectionView用的好,你是可以完全代替tableView。但是,能用tableView就肯定用tableView啦,因为collectionView相当于来说是比较麻烦的....

为什么呢?因为UITableView的cell是系统自动布局好的,不需要我们布局。但UICollectionView的cell是需要我们自己布局的。所以我们在创建UICollectionView的时候必须传递一个布局参数,系统提供并实现了一个布局样式:流水布局(UICollectionViewFlowLayout)

UICollectionViewFlowLayout

tableView与collectionView的创建

tableView的创建 collectionView的创建

他们的所在区别就是多了一个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;

引导页

普通的表格布局

普通的表格布局

self.flowLayout.sectionInset = UIEdgeInsetsMake(5, 5, 5, 5);//section之间的间距

self.flowLayout.minimumInteritemSpacing = 5; // cell的纵向间距

self.flowLayout.minimumLineSpacing = 5;// cell的横向间距

cellforsize 普通的表格布局

特殊表格布局

需要自定义一个类,继承于UICollectionViewFlowLayout

初始化方法:

prepareLayout为api的初始化方法 cell的主要布局

先看看效果图

界面

标签的cell 上面的layout已经布局好了,如果长度超过屏幕长度的话,就会自动换行。

每个标签cell的size

cellforsize 封装的size方法

头部的cell : “已选择标签”、“擅长话题”、“特色语言”、“更多”的size

把他的size设置成这样就可以了,不用tableViewCell里面镶嵌一个collectionView那么复杂。

如果自定义layout,会发现一个问题,就是设置不到header和footer

如果需要 在prepareLayout加上

这样就可以用了。不加上的话是无效的。因为自定义的layout 你即使注册了rusableView 也不会走代理方法的。

上一篇下一篇

猜你喜欢

热点阅读