ios - UIScrollView setContentOffset 滚动到内容大小之外并且不会向后移动

标签 ios ipad uiscrollview animated contentoffset

我想滚动到 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/

相关文章:

ios - UIScrollviews zoomToRect 仅设置 zoomScale 但不设置 contentOffset

ios - 如何垂直自动布局 UIView 列表,一个在另一个之上?

iphone - MKCoordinateRegion 没有以正确的方式显示在 map 上

iphone - UIScrollView 可调整大小?

iphone - 在旋转时放置和移动 View (UIView)

ios - SDWebImage 成功加载处理程序返回错误的 UIImage

ipad - UIScrollView 类似于 iPad 的 Twitter 应用程序

ios - 在过渡动画期间在两个 viewController 之间共享图像

ios - 代码 7 : AWS S3 Header file not found using Cocoa Pods

ios - 在 UIView 中逐像素绘制像素