SEUICollectionViewLayout 是一个用于编写自定义 UICollectionViewLayout 子类的增强基础类。它使用自己的机制来注册视图以及动画辅助和装饰视图,因此您只需编写 prepareLayout
和 layoutAttributesForElementsInRect:
。
此演示是用 Swift 编写的,展示了如何仅通过告诉布局跳过绘制而不是操作模型来从布局中插入和删除视图。
调查项目使用可见性依赖定义
{
"id": "lang-ios-swift",
"show-if": "lang-ios=true"
}
当值改变时,KVO 更新 隐藏
字段,这会触发布局无效化
survey.hidingChangedCallback = {
[unowned self] in
self.collectionView.performBatchUpdates({ () -> Void in
layout.invalidateLayout()
}, completion: nil)
}
当调用 performLayout()
时,它会调用 并应用隐藏样式。
此演示是用 Objective-C 编写的,展示了在布局内部处理溢出的一种方法。它提供了一个可以容纳任意数量的项目的工具栏。在某些情况下(横向手机、iPad、iPhone 6)所有项目都可以放下,但在较小的手机上可能不行。在后一种情况下,它显示一个“更多”按钮,以便将剩余的项目放置在操作表中。
此布局有两个属性,最小项目间距和如果不适合所有内容时显示的最大项目数。第二个属性允许您在压缩模式下只显示最重要的项目。
prepareLayout
首先尝试查看是否一切都能适合。如果不适合,它将获取最多数量的项目,并查看如果“更多”按钮可见,将可以放多少个项目。然后,它根据可见布局属性集在屏幕上排列它们。它还提供了一个只读属性 numberOfVisibleItems
,供“更多”选项使用。