我想滚动到 UIScrollView
的顶部。您有两种可能性:
setContentOffset()
scrollView.contentOffset
如果我使用动画,则 ScrollView 有时会滚动到 (0, -26)
而不是 (0, 0)
。因此它会进一步滚动,但不会返回到 (0, 0)
。目前这种情况仅发生在 iPad 上。
如果我不使用动画,那么每次都会按预期工作。有人知道这里出了什么问题吗?我在 iPad 2 iOS 8.4 模拟器上测试了这个
编辑:
在我使用 setContentOffset()
进行通话之前,我有这个:
scrollView.layoutIfNeeded();
scrollView.setContentOffset(somePosition, true);
删除 layoutIfNeeded
也可以解决该问题。但为什么呢?
注意:我没有连续多次调用 setContentOffset()
。这是完全不同的任务!
最佳答案
尝试这样:
scrollView.layoutIfNeeded();
delay(0.05) {
scrollView.setContentOffset(somePosition, true);
}
(其中延迟
在这里:dispatch_after - GCD in swift?)
我的想法是,这可能会在我们继续之前给布局时间。
另一个想法可能是尝试颠倒这两行的顺序:
scrollView.setContentOffset(somePosition, true);
scrollView.layoutIfNeeded();
这里的想法是,布局将在动画期间发生,并且我们知道布局设计是为了在动画期间工作(例如,这就是为什么旋转期间的布局变化是动画的)。
关于ios - UIScrollView setContentOffset 滚动到内容大小之外并且不会向后移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35436392/