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

Single UIView in UIScrollview on each page

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

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

我该怎么做?

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

您可以使用 UICollectionView 来做到这一点。 您无需创建自己的流布局 - 只需使用 UICollectionViewFlowLayout,并更改项目大小和滚动方向。

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

  1. 初始状态:
    • 'Previous view'帧数:(-100, 0, 100, 100)
    • 'Current view'帧数:(0, 0, 100, 100)
    • 'Next view'帧数:(100, 0, 100, 100)
  2. 滚动一页后:
    • 'Previous view'帧数:(0, 0, 100, 100)
    • 'Current view'帧数:(100, 0, 100, 100)
    • 'Next view'帧数:(200, 0, 100, 100)

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

一定要用UICollectionView。优点?

  1. 更容易 add/remove 添加页面。如果您想更改订单等怎么办? ;)
  2. 可重用元素(节省内存)。
  3. 在 IB 中易于设计。

编辑: UICollectionView 也使用 UIScrollViewDelegate。

您可以随时使用 DMLazyScrollView 库。

我经常使用它,它就是你想要的:)

https://github.com/malcommac/DMLazyScrollView