【发布时间】:2017-09-16 21:09:04
【问题描述】:
当 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)
我错过了什么吗?该样板文件很简单,但现在对于接触屏幕边缘的每个 集合视图来说,它实际上是必需的。 Apple 没有提供默认启用此功能的功能,这似乎真的很奇怪。
【问题讨论】:
-
请注意,建议不要插入整个集合视图内容。例如,节标题应该从边缘延伸到边缘。这是使用布局上的部分插图而不是集合视图上的内容插图来完成的。
-
啊,是的,很好。我最初的测试设置是一个没有标题的单节,所以我没有考虑这个。
-
@Joey 为什么不应该将节标题插入到安全区域?部分标题中的文本被横向的缺口隐藏。
-
@Jonny header 的内容应该被正确插入,但是 header view 本身不应该被插入,从而允许它的背景从边到边拉伸。
-
@Joey 好的,我的内容插入不正确,我必须仔细检查。
标签: ios uicollectionview uikit ios11 iphone-x