ios:在UIScrollview

时间:2015-07-24 18:48:43

标签: ios uiscrollview viewpage

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

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

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

注意:此代码在从第一个视图到第二个视图的右侧滑动时已经有一个错误,有时会发生。我也找不到任何解决办法。该问题的堆栈跟踪是here

1 个答案:

答案 0 :(得分:0)

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

完整的工作项目已更新here