在UIScrollView中滚动期间如何实现视图的回收?

时间:2009-05-07 19:19:31

标签: iphone cocoa-touch uikit uiscrollview

嗯,有一个委托将在以下时间被调用:

  • 滚动视图开始滚动
  • 初始化滚动动作后滚动视图中的手指提升
  • 滚动视图停止减速

但现在的问题是,如果你想在滚动时回收那些View,你必须在滚动期间非常快速地完成。当用户滚动时,某些东西必须触发一个从上到下或从下到上移除一个或三个视图的方法。

问题:

  • 用户可能会非常慢或非常快地滚动。我不知道。

  • 一旦滚动开始,我必须每秒检查50次偏移是什么,并确定是否是时候回收视图。接下来的问题是,如何每秒调用50次方法,以及如何将其停止为滚动停止。

您知道哪些模式可以解决这个问题?我相信那里有一些好的。

3 个答案:

答案 0 :(得分:2)

表格视图非常适合这种事情,并且非常灵活。

答案 1 :(得分:2)

事实上,scrollViewDidScroll方法在滚动期间连续调用,而不是在手指抬起时调用。 (实际上每次更改contentOffset时都会调用它,无论是因为用户滚动还是程序化更改。)因此,您可以安全地使用它来回收视图。

请务必在距离当前视图一个屏幕尺寸距离内预加载视图,因为用户可以在一个手势中滚动一个屏幕宽度或高度距离。

当然,如果你要垂直安排你的观点,UITableView就是你的朋友并为你做回收。 (如果您感兴趣,它还支持可变高度的行。)

答案 2 :(得分:2)

如果启用了分页,那么您的代理会收到

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

当滚动位于页面边界时,这是回收视图的好时机。否则,您将必须在委托的

中监视内容偏移

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;

并在您可以回收视图时解决。