自定义Tab Bar Controller下视图控制器底部出现额外空白,求解决方案
解决Tab Bar上方出现额外空白的办法
我之前也碰到过一模一样的坑!这种和Tab Bar高度完全一致的底部空白,基本都是自动布局或者视图边缘延伸的设置问题,给你几个亲测有效的解决方案:
1. 关闭当前视图控制器的底部边缘延伸
选中带Container View的那个视图控制器,在右侧Attributes Inspector面板里找到Extend Edges选项,把「Under Bottom Bars」的勾选去掉就行。如果习惯用代码控制,也可以在这个VC的viewDidLoad里加一行:
self.edgesForExtendedLayout = .top // 只允许视图延伸到顶部栏下方,或者直接设置为[]
原理是默认情况下视图控制器的视图会延伸到Tab Bar下方,当你用Container View时,这个延伸的区域就会变成空白显示出来。
2. 修正Container View的约束
检查Container View的约束设置:
- 确保它的top、leading、trailing、bottom四个约束都是直接和父视图的「View」(不是Safe Area)对齐
- 如果之前把底部约束绑到了Safe Area的底部,那在有Tab Bar的场景下,Safe Area底部到父视图底部的距离正好是Tab Bar的高度,这就会多出一块空白。把底部约束改成和父视图底部对齐即可。
3. 检查内嵌子视图控制器的布局设置
有时候问题出在Container View内嵌的那个子控制器上:
- 进入内嵌的子控制器,同样检查它的Extend Edges设置,确保没有不必要的边缘延伸
- 确认子控制器的主视图约束是填满Container View的,没有在底部留空
4. 调整Tab Bar的透明度(针对自定义Tab Bar)
如果你的Tab Bar是自定义的,检查是否设置了translucent = true。如果是半透明的,系统会自动给上方的视图留出行距;如果不需要半透明效果,直接把这个属性设为false,同时确保Tab Bar的背景色是不透明的,这样系统就不会额外留空白了。
内容的提问来源于stack exchange,提问作者fAiSaL
相关产品推荐
相关产品推荐

