需求:emoji的横向显示,在每页的最后需要显示一个删除按钮,如下图所示。
- 可以先阅读下苹果的文档
必须需要覆盖的方法
collectionViewContentSize layoutAttributesForElements(in:) layoutAttributesForItem(at:) layoutAttributesForSupplementaryView(ofKind:at:) (如果您的布局支持补充视图)
layoutAttributesForDecorationView(ofKind:at:) (如果您的布局支持装饰视图)当然还有当数据更改移动删除时需要覆盖的方法,目前没有此需求,先不谈,具体可以看文档O(∩_∩)O~~
prepareLayout
在collectionview显示或更新时总会先调用此方法,该方法的默认实现什么都不做。子类可以覆盖它,并使用它来设置数据结构或执行以后执行布局所需的任何初始计算。
清楚了流程,代码很简单
1 | // BIEmojiCollectionViewLayout.h |
参考使用示例
1 | BICollectionViewFixedSizeLayout *_collectionViewFixedLayout = [[BICollectionViewFixedSizeLayout alloc] init]; |
到此,layout的代码已经写完,需要注意的是在使用anchorLastItemPerPage 时 numberOfItemsInSection需要在数据源的count基础上增加page页数,在使用时也要注意获取到正确的数据index来使用。
简单的应用场景,整理记录一下,后续可能会进行优化😄。