更改UIScrollView滚动速度
问题描述:
在我的应用程序中,我有一个视图来扩展UIScrollView,并在用户滚动时填充其内容。但是,如果用户滚动速度过快,UIScrollView内部填充的视图不会按时创建,并且您实际上可以看到UIScrollView的背景。发生这种情况的原因是因为我在layout中执行延迟加载每次contentOffset属性发生更改时,似乎都不会调用子视图。更改UIScrollView滚动速度
如果您慢慢滚动UIScrollView,则不会遇到上述问题,并且内容加载速度不够快。
我能想到的唯一解决这个问题的方法是让UIScrollView在用户从屏幕上抬起手指时不会比一定的速度更快地滚动。
就这样,您知道更改decelerationRate属性不是我的解决方案。 DecelerationRate指示UIScrollView在用户抬起手指后需要停止滚动的速度。
由于事先
FBR
答
scroll.pagingEnabled = YES;
答
我有完全相同的问题。我有一个双向的方式(iOS 8.3版本,雨燕1.2)解决了这个问题:
-
准备
-
滚动视图委托添加到您的类:
class myCustomClassName:UIViewController,UIScrollViewDelegate { }
-
使我的班scrollview的代表:
self.myScrollView.delegate = self
-
添加委托方法,其中我得到的contentOffset(滚动位置):用布尔检查
func scrollViewDidScroll(scrollView: UIScrollView) { //some code... }
-
-
增加了 “内容范围”,如果数据已经beend加入:
func scrollViewDidScroll(scrollView: UIScrollView) { //Total products = TP if self.useScrollViewDynamicLoading { var scrollPosition:CGFloat = scrollView.contentOffset.y switch scrollPosition { case 200.0...300.0: //TP = 24 if self.checkIfProductsInGivenRangeHaveAlreadyBeenAdded(18) { loadProductsForProductRange(12) } case 600.0...700.0: //TP = 36 if self.checkIfProductsInGivenRangeHaveAlreadyBeenAdded(24) { loadProductsForProductRange(18) } } ....
-
在
viewDidLoad()
改变滚动视图的减速率:self.myScrollView.decelerationRate = 0.5
为什么不/你不能做苹果在地图和Safari浏览器应用程序中做什么,只显示卸载内容的抽象背景? – Jonathan 2010-01-07 01:42:38
我当然可以做到这一点,但在这个应用程序中看起来不太好。 – ForeignerBR 2010-01-07 19:25:09
你有没有找到解决方案? – 2010-11-17 20:23:46