导航栏下的 UICollectionView,但标签栏下没有
Posted
技术标签:
【中文标题】导航栏下的 UICollectionView,但标签栏下没有【英文标题】:UICollectionView under Navigation Bar, but not under Tab Bar 【发布时间】:2020-05-01 11:47:50 【问题描述】:我有一个 UICollectionView,我想进入导航栏下方。基本上我希望它忽略整个顶部安全区域,但仍然希望它尊重底部安全区域,因为那里有一个标签栏。这是它目前的样子:
但我希望第一个单元格直接从屏幕顶部开始,在(半透明)导航栏和状态栏下方。
如果我设置collectionView.contentInsetAdjustmentBehavior = .never
,那么顶部效果很好,但是集合视图内容的底部被标签栏隐藏 - 你不能一直滚动到底部。所以我必须再次手动添加底部插图?如何获取标签栏的高度,包括具有主栏的设备上的任何底部安全区域?或者有没有更好的方法告诉collectionview只忽略顶部区域进行内容插入调整?
【问题讨论】:
您是否尝试以编程方式更改 collectionview 的 Y 位置? 【参考方案1】:你只需要手动设置collection view的底部content inset,调整行为设置为.never
后即可。
正确的插图(包括标签栏和任何主页栏)可以在safeAreaInsets
中找到。
collectionView.contentInsetAdjustmentBehavior = .never
collectionView.contentInset.bottom = collectionView.safeAreaInsets.bottom
您需要在设置 safeAreaInsets
时执行此操作,例如 viewDidLayoutSubviews
。
据我所知,它曾经可以通过简单地调整包含视图控制器的 edgesForExtendedLayout
属性来实现,但我相信当 ios 11 中引入安全区域时,这已被逐步淘汰。
【讨论】:
啊,我快到了。但是每次我打印出collectionView.safeAreaInsets.bottom
时,它都是0 - 因为我是在viewDidLoad
中进行的。对 iOS 大叹一声 :)
哈,这让我有很多次......很好的旧视图生命周期嗯以上是关于导航栏下的 UICollectionView,但标签栏下没有的主要内容,如果未能解决你的问题,请参考以下文章