UICollectionView学习总结
2016-01-19 00:04
483 查看
1⃣️
UICollectionView与UITableView的区别:布局
UICollectionView与UITableView的共同点:循环利用
—> UITableView继承UISCrollView
注意:
—> UICollectionView 初始化必须要传入布局
UICollectionViewLayout
UICollectionViewFlowLayout 流水布局:九宫格布局
—> UICollectionViewCell必须要注册
—> 必须自定义cell
方法抽取的原则:高聚合,低耦合.
—> 对于项目功能的模块,实行抽取方法
—> 对于设置属性的模块,可以使用如下方式⬇️
2⃣️
当系统的方法没法满足我们的需求的时候,我们就可以自自定义类,重写方法,达到一些效果.
思路:
照片浏览布局:1.(流水布局)在拖动的时候,在原来基础上重新计算下布局
2.在原来功能上再添加功能,需要自定义流水布局
🚀[b]自定义UICollectionView布局.了解5个方法[/b]
⭐️- (void)prepareLayout;
什么时候调用:一开始布局就会调用,UICollectionView刷新的时候也会调用
作用:计算所有的cell布局,条件:cell布局固定
⭐️- (nullable NSArray<__kindof UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect;
[b]作用[/b]:返回每个cell布局,
给定一个区域,就返回这个区域内所有cell布局
允许一次性返回所有cell布局
分析:
UICollectionViewLayoutAttributes:描述cell的布局
每一个cell对应UICollectionViewLayoutAttributes
只要拿到UICollectionViewLayoutAttributes,拿到cell
⭐️- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds;
Invalidate:刷新
是否允许在拖动的时候刷新布局
谨慎使用,YES:只要一滚动就会布局
⭐️- (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity;
什么时候调用:手动拖动UICollectionView,当手指离开的时候,就会调用
作用:返回UICollectionView最终的偏移量
proposedContentOffset:最终的偏移量
⭐️- (CGSize)collectionViewContentSize;
—>我的总结:
[b]UICollectionView与UIScrollView比较:[/b]
UICollectionView创建的同时必须要初始化布局
这里选择UICollectionViewFlowLayout流水布局
↘️所需要的两个对象
UICollectionView *collectionView;
UICollectionViewFlowLayout *layout;
↘️在layout中,设置布局的一些属性
itemSize:collectionView中的每个模型尺寸
scrollDirection:滚动方向
sectionInset:设置额外滚动区域
......
创建collectionView对象并同时传入布局layout,
↘️设置collectionView属性
设置collectionView的相关属性:位置,背景色,.....
↘️注意
UICollectionView和UIScrollView的不同之处就体现在布局,
UICollectionView初始化时需要布局且UICollectionView内的控件完全根据布局的设置来显示,不需要去设置滚动区域.
UIScrollView需要去根据控件的多少来设置内容滚动区域contentSize.
👉UITableView继承自UIScrollView
UICollectionView与UITableView的区别:布局
UICollectionView与UITableView的共同点:循环利用
—> UITableView继承UISCrollView
注意:
—> UICollectionView 初始化必须要传入布局
UICollectionViewLayout
UICollectionViewFlowLayout 流水布局:九宫格布局
—> UICollectionViewCell必须要注册
—> 必须自定义cell
方法抽取的原则:高聚合,低耦合.
—> 对于项目功能的模块,实行抽取方法
—> 对于设置属性的模块,可以使用如下方式⬇️
2⃣️
当系统的方法没法满足我们的需求的时候,我们就可以自自定义类,重写方法,达到一些效果.
思路:
照片浏览布局:1.(流水布局)在拖动的时候,在原来基础上重新计算下布局
2.在原来功能上再添加功能,需要自定义流水布局
🚀[b]自定义UICollectionView布局.了解5个方法[/b]
⭐️- (void)prepareLayout;
什么时候调用:一开始布局就会调用,UICollectionView刷新的时候也会调用
作用:计算所有的cell布局,条件:cell布局固定
⭐️- (nullable NSArray<__kindof UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect;
[b]作用[/b]:返回每个cell布局,
给定一个区域,就返回这个区域内所有cell布局
允许一次性返回所有cell布局
分析:
UICollectionViewLayoutAttributes:描述cell的布局
每一个cell对应UICollectionViewLayoutAttributes
只要拿到UICollectionViewLayoutAttributes,拿到cell
⭐️- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds;
Invalidate:刷新
是否允许在拖动的时候刷新布局
谨慎使用,YES:只要一滚动就会布局
⭐️- (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity;
什么时候调用:手动拖动UICollectionView,当手指离开的时候,就会调用
作用:返回UICollectionView最终的偏移量
proposedContentOffset:最终的偏移量
⭐️- (CGSize)collectionViewContentSize;
—>我的总结:
[b]UICollectionView与UIScrollView比较:[/b]
UICollectionView创建的同时必须要初始化布局
这里选择UICollectionViewFlowLayout流水布局
↘️所需要的两个对象
UICollectionView *collectionView;
UICollectionViewFlowLayout *layout;
↘️在layout中,设置布局的一些属性
itemSize:collectionView中的每个模型尺寸
scrollDirection:滚动方向
sectionInset:设置额外滚动区域
......
创建collectionView对象并同时传入布局layout,
↘️设置collectionView属性
设置collectionView的相关属性:位置,背景色,.....
↘️注意
UICollectionView和UIScrollView的不同之处就体现在布局,
UICollectionView初始化时需要布局且UICollectionView内的控件完全根据布局的设置来显示,不需要去设置滚动区域.
UIScrollView需要去根据控件的多少来设置内容滚动区域contentSize.
👉UITableView继承自UIScrollView
相关文章推荐
- PHP 统计一维数组value相同的元素的个数num,并将其转化为下标为数字,值是value和num的二维数组
- Android UI集锦——1.Android Drawable分类汇总(1/3)
- Android UI集锦——1.Android Drawable分类汇总(2/3)
- Android UI集锦——1.Android Drawable分类汇总(3/3)
- iOS UIImageView设置为圆形
- iOS开发--一些UINavigationBar属性的设置
- RabbitMQ 3.5.3,guest用户无法远程登陆
- New UI-为TextView设置超链接跳转的三个方法
- Divide and conquer:Matrix(POJ 3685)
- [LeetCode] 187. Repeated DNA Sequences 解题思路
- 为什么Java中1000==1000为false而100==100为true?
- (UILongPressGestureRecognizer)
- UITableViewCell的选中时的颜色及tableViewCell的selecte与deselecte
- iOS - 用 UIBezierPath 实现果冻效果
- 第三天的实现,主要是封装优化,不会文件啊,把优化后的主文件发上来(用了xlb)
- UICollectionView的注册
- Android特效专辑(五)——自定义圆形头像和仿MIUI卸载动画—粒子爆炸
- Android特效专辑(五)——自定义圆形头像和仿MIUI卸载动画—粒子爆炸
- execute、executeUpdate、executeQuery三者的区别(及返回值)
- 关于Qt5中利用UI建立二级菜单无法输入中文的处理技巧