如何使用UIPageViewController像iOS Photos app一样实现照片刷卡?

时间:2019-01-21 06:38:52

标签: ios swift uipageviewcontroller

假设我有很多photoId,可以在Photos APP requestPhoto API中使用它们来获取照片。如何实现UIPageViewController来容纳这样的大型数组。左右滑动时,不会为每张照片创建视图控制器,这会导致App性能下降。有人可以建议一种更好的方法吗?我到处都看了,但是什么也找不到。我想解决这个问题的另一种方法是“如何用动态数据集而不是静态数来实现UIPageViewController

2 个答案:

答案 0 :(得分:0)

我建议采用以下方法

  1. 在照片界面中使用UICollectionView。
  2. 为集合视图选择水平滚动,以便您的用户可以左右滑动。
  3. 数据源阵列可以保存照片的源,这可以使您的照片查看器动态化。只需更新数组并在collectionview上触发reloadData()即可刷新UI。如果您不想让用户知道刷新,则可以跟踪用户上次查看的项目,并在刷新时滚动到该项目。

  4. Collectionview将自动为您处理内存,因此您不必担心。

答案 1 :(得分:0)

对于其他遇到相同问题的人。我发现这部影片非常有帮助。 https://www.youtube.com/watch?v=ItdPXinQOp8

据此,我用惰性变量var创建了一个数组,该数组推入了数组中的所有视图控制器。仅在需要时才加载视图控制器,以防止性能下降。因此,如果您有n个视图控制器,则没关系。

所以基本上,方法是:

  1. 具有一个数组,其中包含要滑动的所有imageID。
  2. 制作一个懒惰的var newArray,它将遍历imageIDs(Array)并通过api调用获取图像。不用担心,它只会在需要时调用api。用接收到的图像初始化详细视图控制器,然后将viewcontroller推送到newArray中。
  3. 使用所有新创建的所有视图控制器数组,照常设置UIPagecontroller委托。