我有一个UICollectionView,我想进入导航栏。基本上,我希望它忽略整个顶部安全区域,但仍然希望它尊重底部安全区域,因为那里有一个标签栏。这是目前的样子:
但是我希望第一个单元格直接在屏幕的顶部(半透明的导航栏和状态栏下方)开始。
如果设置collectionView.contentInsetAdjustmentBehavior = .never
,则顶部效果很好,但集合视图内容的底部部分被标签栏隐藏了-不能一直滚动到底部。因此,我必须再次手动添加底部插图吗?如何获得标签栏的高度,包括带有主页栏的设备上的底部安全区域?还是有更好的方法告诉collectionview仅忽略顶部区域进行内容插入调整?
将调整行为设置为.never
后,您只需要手动设置集合视图的底部内容插图。
可以在safeAreaInsets
中找到正确的插图(包括标签栏和任何主页栏。)>
collectionView.contentInsetAdjustmentBehavior = .never collectionView.contentInset.bottom = collectionView.safeAreaInsets.bottom
您需要在已设置
safeAreaInsets
的时候执行此操作,例如viewDidLayoutSubviews
。
据我所知,过去曾经可以通过简单地调整包含视图控制器的edgesForExtendedLayout
属性来实现,但是我相信在iOS 11中引入安全区域后该特性就被淘汰了。