为了实现更多样式,我们会在一个collection里加载多种cell
但是加载后发现顺序混乱
出现这个问题:
1、首先要检查数据源的排序是否正确
2、看一下cellForItemAtIndexPath加载时取到的数据和index是否相符
如果以上没问题那么就需要关注layout了,可以给cell加个label显示一下index(参考仅第一加载时,因为滑动或者刷新cell会复用)
顺序混乱有一种情况是排在首位的cell出现在了中间
这时候要格外关注第一个item的坐标,如果第一个item占了一整行,那么如果使用的是系统的layout,系统或默认的把你每行第一个item都放在中间,那么系统的layout就不再适用了,需要自定义
重写系统layout
- (NSArray*)layoutAttributesForElementsInRect:(CGRect)rect
在该方法内设置第一个item属性
CGRectframe = attributes.frame;
if(attributes.indexPath.row==0) {
frame.size.width=Width;
frame.size.height=Height;
frame.origin.x=0;
frame.origin.y=0;
}
attributes.frame= frame;
}
自定义类也是继承的系统方法,已经写过的系统布局也会调用,但不会影响子类