iOS 11: UICollectionView: 出现时发生滚动

iOS 11: UICollectionView: when appearing, scrolling happens

当我的 UIViewController 和里面的 UICollectionView 一起出现时,内容会向上滚动一点点。

我实施了 scrollViewDidScroll: 并且正在记录 contentOffset.y:

-20.000000
-20.000000
0.000000
0.000000

这只发生在 iOS 11(模拟器和设备)上,而不发生在 iOS 10 或 iOS 9 上。还有其他人遇到过这种情况吗?

编辑 非常奇怪的事情:这只发生在未调用 viewDidLoad 时,例如当 UIViewController 已经存在并再次弹出时,但不是在第一次显示 UIViewController 时...

在iOS11中,contentInset.top可以在UIScrollView和子类(UICollectionView、UITableView)中添加,而状态栏、导航栏或其他内容出现在您的视图层次结构中。

此插图来自新的 adjustedContentInset 属性。 (文档:adjustedContentInset

要删除这个额外的插图,请将 scrollView 上的内容插图调整设置为从不:

[self.myScrollView setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];

WWDC17 视频中的更多信息:Updating Your App for iOS 11 at 19'