1.UICollectionView使用流水布局——UICollectionViewFlowLayout时,需要满足条件:

每个item(即cell)的大小是一样的,不仅是宽度,还有高度。这样,当collectionview的宽度发生变化时,item能将其动态填充。
itemSize即为每个cell的尺寸。

collectionview初始化时必须设置一个非空的layout。所以若想使用类似

UICollectionViewController *ctrl = [[UICollectionViewController alloc]init];

来初始化一个collectionviewcontroller,那么就需要重写它的init方法

-(id)init{UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];layout.itemSize = CGSizeMake(100,100);if(self = [super initWithCollectionViewLayout:layout]){//这里不用写内容
    }return self;
}

设置item之间的间距时,可以用以下,并且只适合UICollectionViewFlowLayout

//垂直方向间距
layout.minimumLineSpacing = 0;
//水平方向间距
layout.minimumInteritemSpacing = 0;

2.collectionview中的布局方法

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect{}

中返回值是一个数组,存放的是rect范围内所有cell的布局属性,即frame。
其中,rect是一个矩形框,它表示的是collectionview的大小位置。即定义了collectionview的大小,那么rect也是返回的该区域内的cell布局。如:

@interface LineLayout(){UIView *_view;
}-(NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect{//取出父类算出的布局属性NSArray *attsArray = [super layoutAttributesForElementsInRect:rect];if (!_view) {UIView *view = [[UIView alloc]initWithFrame:rect];view.backgroundColor = [UIColor orangeColor];_view = view;[self.collectionView addSubview:view];}return attsArray;
}

而collectionview的定义为

_collectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(0, 100, mScreenWidth, 300) collectionViewLayout:circle];

效果为:

当collectionview这样设置时

_collectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(0, 100, mScreenWidth/2, 300) collectionViewLayout:circle];

效果为

3.在初次使用Masonry时,若报类似

Demo-collectionviewExample[4443:172886] *** Assertion failure in -[MASViewConstraint install], /Users/Suning/Desktop/study/Demo-collectionviewExample/Pods/Masonry/Masonry/MASViewConstraint.m:345

错误,原因在于
使用Masonry为自定义view添加约束时,得先把自定义view添加到父视图上。

上图就是错误用法,将两个位置调换下即可。

转载于:https://www.cnblogs.com/Apologize/p/5328010.html

使用uicollectionView时需要注意的问题相关推荐

  1. iOS 11 UICollectionView顶部出现白色间隔的问题

    iOS11 UICollectionView顶到屏幕顶端会出现一个20高度的白色间隔,是由于UICollectionView的自动调整功能为状态栏留出的位置 只需在创建UICollectionView ...

  2. TableView/CollectionView 滑动顶部效果优化

    TableView/CollectionView 滑动顶部效果优化 默认弹簧效果 在使用 UITableView 或者 UICollectionView 时,如果开启弹框效果,下拉是整个内容就会偏移, ...

  3. 【转】 iOS-Core-Animation-Advanced-Techniques(七)

    高效绘图.图像IO以及图层性能 高效绘图 原文: http://www.cocoachina.com/ios/20150106/10840.html 不必要的效率考虑往往是性能问题的万恶之源. --W ...

  4. iOS-Core-Animation-Advanced-Techniques(七)

    转载自:http://www.cocoachina.com/ios/20150106/10840.html Cocos开发者平台 Cocos引擎中文官网 H5轻游戏平台 退出3471815256 iO ...

  5. CorAnimation7-高效绘图、图像IO以及图层性能

    高效绘图 软件绘图 术语绘图通常在Core Animation的上下文中指代软件绘图(意即:不由GPU协助的绘图).在iOS中,软件绘图通常是由Core Graphics框架完成来完成.但是,在一些必 ...

  6. 高效绘图、图像IO以及图层性能

    http://www.cocoachina.com/ios/20150106/10840.html 高效绘图.图像IO以及图层性能 高效绘图 不必要的效率考虑往往是性能问题的万恶之源. --Willi ...

  7. iOS Core Animation Advanced Techniques(七):高效绘图、图像IO以及图层性能

    高效绘图 不必要的效率考虑往往是性能问题的万恶之源. --William Allan Wulf 在第12章『速度的曲率』我们学习如何用Instruments来诊断Core Animation性能问题. ...

  8. iOS 开发 解决UICollectionView的多组头部视图样式不一样复用时发生错乱问题

    UICollectionView用起来比UITableView麻烦多了,如何解决多组头部视图复用时出现的错乱问题就很关键 头部视图有几种样式就注册几种头部视图 // 防止cell和头部视图复用出现错乱 ...

  9. UICollectionView

    UICollectionView 多列的UITableView,最简单的形式,类似于iBooks中书架的布局,书架中放着你下载的和购买的电子书. 最简单的UICollectionView是一个Grid ...

最新文章

  1. python2.7除法_对python中的float除法和整除法的实例详解
  2. SAP Explore hidden functions in MD04
  3. 完整asp.net图形验证码程序
  4. 【1】生产者-消费者模型的三种实现方式
  5. 并发编程之多线程线程安全(上)
  6. 新UI云开发壁纸小程序源码(新修复版带编译教程)
  7. 123_Power PivotPower BI DAX函数说明速查
  8. CSS 元素的绝对定位 position: absolute 和 position: fixed
  9. javascript表格可以输入数据_最火8套测量自动计算表格,输入数据直接得结果,效率提升80%...
  10. 转:卷积神经网络_(1)卷积层和池化层学习
  11. 人生没有理想,只有目标
  12. php文件之间传值的三种主流并且常用的方式
  13. java 成绩管理系统 报告_Java学生成绩管理系统实验报告
  14. HTML 自动跳转代码
  15. QQ空间权限限制破解思路
  16. 【IOS账号分享】《帕斯卡契约》
  17. SAD SATD的区别及应用
  18. java本科研究生待遇_本科生VS研究生薪资对比!差别这么大?
  19. Web安全基础一漏洞产生原理漏洞探测(持续更新)
  20. python-绘制散点图

热门文章

  1. 数据库备份 java jar_Java实现数据库备份并利用ant导入SQL脚本
  2. NYOJ 27 大数阶乘
  3. 数组中第K个最大元素
  4. python脚本:判断字符是否为中文
  5. bootstrap网格系统_如何使用Bootstrap网格系统?
  6. kinect中psi是什么_PSI的完整形式是什么?
  7. linux如何停用xdmcp服务,如何禁用XDMCP服务
  8. jsonp react 获取返回值_必须要会的 50 个React 面试题(下)
  9. java 设计作业——学生类的基本练习
  10. LeetCode 88. 合并两个有序数组 golang