在我的应用程序中,我有一个视图,扩展UIScrollView并在用户滚动时填充其内容。但是,如果用户滚动得太快,则在UIScrollView中填充的视图不会按时创建,您实际上可以看到UIScrollView的背景。发生这种情况的原因是因为我在layoutSubviews中执行此延迟加载似乎每次更改contentOffset属性时都不会调用。
如果您慢慢滚动UIScrollView,则不会遇到上述问题并且内容加载得足够快。
我能想到的唯一解决这个问题的方法是,当用户从屏幕上抬起手指时,UIScrollView的滚动速度不会超过某个速度。
您知道更改decelerationRate属性不是我的解决方案。 DecelerationRate告诉UIScrollView用户抬起手指后停止滚动所需的速度。
答案 0 :(得分:1)
scroll.pagingEnabled = YES;
答案 1 :(得分:0)
我有完全相同的问题。我用双向方法解决了它(iOS 8.3,Swift 1.2):
制备
将scrollview委托添加到您的班级:
class myCustomClassName:UIViewController,UIScrollViewDelegate
{
}
让我的班级成为scrollview的代表:
self.myScrollView.delegate = self
添加了委托方法,我获取了contentOffset(滚动位置):
func scrollViewDidScroll(scrollView: UIScrollView)
{
//some code...
}
添加"内容范围"如果数据已经添加,则使用bool检查:
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