【发布时间】:2011-09-24 23:38:48
【问题描述】:
这里的第一个问题,很好:P
我正在尝试制作一个无限的 UIScrollView(我使用了“StreetScroller”苹果演示项目)。当 UIScrollView 快到 contentSize 的末尾时,将 contentOffset 设置为 contentSize 的中心,并移动所有子视图,以便对用户透明。
当你缓慢滚动时它可以正常工作,但是当你滚动太快并且到达 UIScrollView 的末尾时,事情变得很奇怪。
在我的例子中,我使用 UIScrollView,frame.size.width = 320 和 contentSize.x = 3 * frame.size.width。 这就是当您滚动太快并且到达 contentSize 末尾时日志中发生的情况(因此,如果向右滚动时 x > 560):
--> UIScrollView 因为惯性而滚动
SetContentOffset called width x : 504.730072
SetContentOffset called width x : 516.878967
SetContentOffset called width x : 528.489990
SetContentOffset called width x : 540.347656
SetContentOffset called width x : 550.754028
SetContentOffset called width x : 561.200378
--> UIScrollView 到达 contentSize 的末尾,所以我们重新定位
The next call of setContentOffset is for recentering the view
SetContentOffset called width x : 320.000000
--> 问题来了,UIScrollView 没有考虑 contentOffset.x 的变化,它使用最后使用的 contentOffset.x 值继续动画......
SetContentOffset called width x : 571.421753
The next call of setContentOffset is for recentering the view
SetContentOffset called width x : 320.000000
SetContentOffset called width x : 581.283447
The next call of setContentOffset is for recentering the view
SetContentOffset called width x : 320.000000
SetContentOffset called width x : 610.100952
这会一直持续到动画结束。
如果有人有解决方案来设置 contentOffset 并强制 UIScrollView 更新其动画:)
我几乎阅读了 stackoverflow 和其他网站上关于无限 UIScrollView 的所有主题,但我没有看到任何在动画期间更改 contentOffset 的有效解决方案,我尝试在所有不同的 UIScrollView 委托方法中重新定位。而且我不想在滚动过程中更改 contentSize(它仅在您向右滚动或下滚动时才有效......)
【问题讨论】:
标签: objective-c uiscrollview infinite-scroll