当 iPhone X 横向使用时,您应该检查 safeAreaInsets 以在左侧和右侧制作适当大的排水沟。UITableView 具有新insetsContentViewsToSafeArea
属性(默认为 true),可自动将单元格内容保存在安全区域中。
我很惊讶 UICollectionView 似乎没有类似的东西。我希望对于垂直滚动的集合视图,在横向时,左侧和右侧将插入到安全区域(相反,如果需要在纵向中插入水平滚动的集合视图)。
确保此行为的最简单方法似乎是添加到集合视图控制器中:
- (void)viewSafeAreaInsetsDidChange {
[super viewSafeAreaInsetsDidChange];
UIEdgeInsets contentInset = self.collectionView.contentInset;
contentInset.left = self.view.safeAreaInsets.left;
contentInset.right = self.view.safeAreaInsets.right;
self.collectionView.contentInset = contentInset;
}
...假设 contentInset.left/right 通常为零。
(注意:是的,对于 UICollectionViewController,它必须是self.view.safeAreaInsets
;在调用它时,奇怪的是,更改safeAreaInsets
尚未传播到self.collectionView
)
我错过了什么吗?该样板文件很简单,但现在对于每个触及屏幕边缘的集合视图来说,它实际上都是必需的。苹果没有提供默认启用此功能的功能,这似乎真的很奇怪。