每个页面上的UIScrollview中的单个UIView



我想在启用分页的滚动视图中使用 UIButtonsUILabels 创建 10 个 UIViews

我想在滚动视图的每一页上重复使用视图。我不想使用 loop 创建 10 个视图。

我该怎么做?

还有一个问题。我想在滚动时对上一个和下一个视图提供一些动画效果。那么如何识别视图呢?

您可以使用UICollectionView来执行此操作。您无需创建自己的流布局 - 只需使用 UICollectionViewFlowLayout,并更改项目大小和滚动方向。

一定要使用 UICollectionView。优点?

  1. 更容易添加/删除其他页面。如果您想更改顺序等怎么办?;)
  2. 可重用元素(内存效率)。
  3. 易于在IB中设计。

编辑:UICollectionView也使用UIScrollViewDelegate。

我会使用 3 个UIView s - 一个用于当前显示视图,一个用于上一个视图,一个用于下一个视图。滚动时,我会更新这些视图(或约束)的帧,例如:

  1. 初始状态:
    • "上一视图"框架:(-100, 0, 100, 100)
    • "当前视图"框架:(0, 0, 100, 100)
    • "下一视图"框架:(100, 0, 100, 100)
  2. 滚动一页后:
    • "上一视图"框架:(0, 0, 100, 100)
    • "当前视图"框架:(100, 0, 100, 100)
    • "下一视图"框架:(200, 0, 100, 100)

这些视图仅用于显示目的,因此无需标识视图本身;我只需要有一个当前页面索引,还需要在页面滚动后使用基于数据模型的内容数据更新每个视图,例如具有以下索引的数组元素:(currentPageIndex - 1)currentPageIndex(currentPageIndex + 1)

您可以随时使用 DMLazyScrollView 库。

我经常使用它,它只是随心所欲地工作:)

https://github.com/malcommac/DMLazyScrollView

最新更新