Wes*_*gne 38 uikit ios uicollectionview ios11 iphone-x
当使用横向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;
}
Run Code Online (Sandbox Code Playgroud)
...假设contentInset.left/right通常为零.
(注意:是的,对于UICollectionViewController,需要self.view.safeAreaInsets;在调用此时,更改为safeAreaInsets奇怪尚未传播到self.collectionView)
我错过了什么吗?该样板很简单,但现在对于触及屏幕边缘的每个集合视图都是有效的.Apple默认情况下没有提供启用它的功能,这似乎很奇怪.
pet*_*syn 54
有同样的问题.这对我有用:
override func viewDidLoad() {
if #available(iOS 11.0, *) {
collectionView?.contentInsetAdjustmentBehavior = .always
}
}
Run Code Online (Sandbox Code Playgroud)
该文档的.always枚举情况下,说:
始终在内容调整中包含安全区域插入.
在手机旋转的情况下,此解决方案也能正常工作.
Wes*_*gne 40
虽然Nathan对各种布局的UICollectionView的多功能性是正确的,但我主要关注的是"默认"情况,其中一个使用UICollectionViewFlowLayout.
事实证明,iOS 11已经添加了一个sectionInsetReference属性UICollectionViewFlowLayout.关于它的官方文档目前缺乏描述,但标题将其描述为
该部分插入的参考边界将被定义为相对于.默认为
.fromContentInset.注意:内容插入始终至少得到尊重.例如,如果sectionInsetReference等于
.fromSafeArea,但调整后的内容插入大于安全区域和节插入的组合,则节内容将与内容插入对齐.
可能的值是
@available(iOS 11.0, *)
public enum UICollectionViewFlowLayoutSectionInsetReference : Int {
case fromContentInset
case fromSafeArea
case fromLayoutMargins
}
Run Code Online (Sandbox Code Playgroud)
并将其设置为.fromSafeArea产生所需的结果,即最初以纵向方向时:
然后当旋转到横向时,细胞被插入,使得它们完全在安全区域内:
...但是,目前存在一个错误,当视图处于横向状态后旋转回纵向时,它继续表现为好像左/右safeAreaInsets设置为横向值:
关于这个问题我已经提交了雷达(rdar:// 34491993).
感谢以上的帮助.对于我的UICollectionViewController子类,我将以下内容添加到viewDidLoad()(Swift 3):
if let flowLayout = collectionView?.collectionViewLayout as? UICollectionViewFlowLayout {
if #available(iOS 11.0, *) {
flowLayout.sectionInsetReference = .fromSafeArea
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11244 次 |
| 最近记录: |