【iOS】collectionview内多种cell时顺序混乱问题及解决

为了实现更多样式,我们会在一个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;

            }

自定义类也是继承的系统方法,已经写过的系统布局也会调用,但不会影响子类

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容