我想在启用分页的滚动视图中使用 UIButtons 和 UILabels 创建 10 个 UIViews。
我想在滚动视图的每一页上重复使用视图。我不想使用 loop 创建 10 个视图。
我该怎么做?
还有一个问题。我想在滚动时对上一个和下一个视图提供一些动画效果。那么如何识别视图呢?
您可以使用UICollectionView来执行此操作。您无需创建自己的流布局 - 只需使用 UICollectionViewFlowLayout,并更改项目大小和滚动方向。
一定要使用 UICollectionView。优点?
- 更容易添加/删除其他页面。如果您想更改顺序等怎么办?;)
- 可重用元素(内存效率)。
- 易于在IB中设计。
编辑:UICollectionView也使用UIScrollViewDelegate。
我会使用 3 个UIView
s - 一个用于当前显示视图,一个用于上一个视图,一个用于下一个视图。滚动时,我会更新这些视图(或约束)的帧,例如:
- 初始状态:
- "上一视图"框架:
(-100, 0, 100, 100)
- "当前视图"框架:
(0, 0, 100, 100)
- "下一视图"框架:
(100, 0, 100, 100)
- "上一视图"框架:
- 滚动一页后:
- "上一视图"框架:
(0, 0, 100, 100)
- "当前视图"框架:
(100, 0, 100, 100)
- "下一视图"框架:
(200, 0, 100, 100)
- "上一视图"框架:
这些视图仅用于显示目的,因此无需标识视图本身;我只需要有一个当前页面索引,还需要在页面滚动后使用基于数据模型的内容数据更新每个视图,例如具有以下索引的数组元素:(currentPageIndex - 1)
、currentPageIndex
、(currentPageIndex + 1)
。
您可以随时使用 DMLazyScrollView 库。
我经常使用它,它只是随心所欲地工作:)
https://github.com/malcommac/DMLazyScrollView