这里的第一个问题,很好:P
我正在尝试制作一个无限的 UIScrollView(我使用了“StreetScroller”苹果演示项目)。当 UIScrollView 快到 contentSize 的末尾时,contentOffset 设置为 contentSize 的中心,所有子视图都被移动,因此对用户来说是透明的。
当您缓慢滚动时它可以正常工作,但是当您滚动太快并且到达 UIScrollView 的末尾时,事情变得很奇怪。
在我的情况下,我使用带有 frame.size.width = 320 和 contentSize.x = 3 * frame.size.width 的 UIScrollView。这就是当您滚动太快并且到达 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 (它仅在您向右滚动或 bot 时才有效......)