UICollectionView向上滚动时底部安全区出现灰色条遮挡UIView问题求助
解决方案
第一步:删除冲突的布局代码
你当前同时使用了 UICollectionViewCompositionalLayout 和 UICollectionViewDelegateFlowLayout 两套布局系统,会引发不可预期的布局异常:
- 去掉类声明中的
UICollectionViewDelegateFlowLayout协议 - 删除整个无效的
sizeForItemAt代理方法
第二步:修正滚动指示器内边距
你描述的滚动时出现、滚动结束自动消失的灰色条,本质是 UICollectionView 的垂直滚动指示器。你当前将 scrollIndicatorInsets 设为 zero,导致指示器底部和 collectionView 底部对齐,会叠加显示在底部自定义 tabView 上,修改对应配置:
// viewDidLayoutSubviews 中修改滚动指示器内边距,bottom值和你section的bottom inset保持一致为80即可 myCollectionView.scrollIndicatorInsets = UIEdgeInsets(top: 0, left: 0, bottom: 80, right: 0)
如果不需要显示滚动指示器,可直接关闭:
myCollectionView.showsVerticalScrollIndicator = false
第三步:校验视图约束
确认你的 myCollectionView 的底部约束是绑定到 tabView 的顶部,而非父视图的底部,从根源避免 collectionView 显示区域和底部自定义 tab 重叠的问题。
额外优化建议
你在 viewWillAppear 中同时使用 bringSubviewToFront 和 zPosition 两种方式控制层级,二者选其一即可,避免层级逻辑混乱。
内容的提问来源于stack exchange,提问作者EarlyEdCoder
相关产品推荐
相关产品推荐

