0

我正在尝试使用水平 UIScrollView 实现视图寻呼机。视图寻呼机可能包含许多视图。我将 UIScrollview 与 pagingEnabled 一起使用为 true。问题是我不能同时拥有内存中的所有视图,因为可能有大约 40-50 个不同的视图。所以我决定加载当前视图,它是两侧(左右)相邻的 3 个视图。当我滚动然后使用 scrollViewDidScroll 方法时,我从左侧删除一个视图并在右侧插入一个新视图。为此,我执行以下操作:

  • 首先检查滚动是右滚动还是左滚动,然后是否滚动完整页面
  • 然后(对于右滚动)我从 superView 中删除最左边的视图(即 scrollView)。
  • 将剩余视图的 x 坐标向左移动。
  • 在右侧添加新的子视图。
  • 相应地更改滚动视图的内容大小。

不知何故,上述实现无法正常工作,尤其是涉及更改 x 坐标的实现。我认为我遗漏了一些东西并试图解决以错误方式在 scrollView 中操作视图的问题。这是我在 github 上实现的演示项目的链接。非常欢迎有关当前实施中的问题或任何其他关于如何以其他方式实施的想法的帮助。

注意:此代码在从第一个视图向右滑动到第二个视图时已经有一个错误,有时会发生这种情况。我也找不到任何解决方案。该问题的堆栈跟踪在这里

4

1 回答 1

0

好的,实际上缩小和扩展 scrollView 内容大小的方法不是正确的方法(至少在我的场景中)。由于我已经将视图数量保持不变,因此我将 contentSize 设置为固定视图数量 * 屏幕宽度。现在每次我只是用来从 scrollView 中删除它们并在方法removeFromSuperview()中向 scrollView 添加一个新的。scrollViewDidScroll()

完整的工作项目在这里更新。

于 2015-07-27T10:26:15.950 回答