UIScrollView 无限滚动不分页
Posted
技术标签:
【中文标题】UIScrollView 无限滚动不分页【英文标题】:UIScrollView inifinite scroll without paging 【发布时间】: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 更新其动画:)
我几乎阅读了 *** 和其他网站上关于无限 UIScrollView 的所有主题,但我没有看到任何在动画期间更改 contentOffset 的有效解决方案,我尝试在所有不同的 UIScrollView 委托方法中重新定位。而且我不想在滚动过程中更改 contentSize(它仅在您向右滚动或下滚动时才有效......)
【问题讨论】:
【参考方案1】:我刚刚在 ios Simulator 4.3 中运行的 Apple StreetScroller 示例中注意到了这个问题。
我在这里看到了这个问题:Infinite UIScrollView gets strange behavior in iOS4.3 not iOS5,刚刚在 iOS 5 模拟器中进行了测试,可以确认它在那里按预期运行。
不知道 4.3 中的相同代码有什么问题。
【讨论】:
以上是关于UIScrollView 无限滚动不分页的主要内容,如果未能解决你的问题,请参考以下文章