可能引起的崩溃
没有注册cell,在执行函数dequeueReusableCellWithIdentifier时会崩溃
UICollectionViewController直接使用alloc init初始化,没有指定UICollectionViewLayout会崩溃,并且连断点都停不住
代理函数cellForItemAtIndexPath返回nil的情况会引起崩溃
cellForItemAtIndexPath应该从重用池中取cell,用alloc init方式初始化,会导致崩溃
一些常识
没有Header View和foot View
对于每个section,有Supplementary View,可以指定是header的位置还是foot的位置。所以,在只有一个section的情况下,可以看起来有header view的样子
Supplementary View也要先注册,注册时也要指定header还是foot得位置
Supplementary View需要指定size,内部的子视图可以用auto layout,Supplementary View只能以绝对布局的思路,计算size。里面如果有内容不定的多行文本,计算height就有点麻烦
UICollectionViewLayout也是一种代理,需要出现在代理列表中,但是不需要额外指定“代理”,跟dataSource或者delegate用同一个。
使用习惯
用UIView是最方便的,还不用考虑兼容性,用auto layout也相对方便
静态图片可以用UITableViewController,比如登录注册页面
动态页面优先考虑UITableView
横向表格,瀑布流等,选用UICollectionView方便一点
参考文章
iOS流布局UICollectionView系列一——初识与简单使用UICollectionView