iPhone 8 Plus模拟器中Toolbar未显示问题求助
解决iPhone 8 Plus模拟器中Toolbar不显示的问题
嘿,我之前也碰到过类似的情况,别着急,咱们一步步排查:
检查Toolbar的约束设置
有时候在Storyboard里显示正常,但不同尺寸设备下约束没做好会导致Toolbar被挤出屏幕。进入Storyboard选中Toolbar,重点看这几个约束:- 确认底部约束是和Safe Area底部对齐,而不是父视图底部(iPhone 8 Plus有Home栏,Safe Area才是正确的底部参考)
- 检查左右约束是否和Safe Area/父视图边缘对齐,宽度设置是否合理
- 推荐直接添加这三个约束:
bottom = Safe Area.bottom、leading = Safe Area.leading、trailing = Safe Area.trailing,高度可以设为默认44或者让系统自动计算
查看ViewController的布局属性
选中你的ViewController,在Attributes Inspector里找Extend Edges部分:- 别意外勾选了不该选的选项,同时排查代码里有没有设置过会影响布局的属性:
// Swift里别误写这种代码,会把Toolbar挤走 self.edgesForExtendedLayout = []// Objective-C同理 self.edgesForExtendedLayout = UIRectEdgeNone;
另外还要确认ViewController的Toolbar Items是否正确关联了你添加的Toolbar,在属性面板里选对对应的items。
- 别意外勾选了不该选的选项,同时排查代码里有没有设置过会影响布局的属性:
检查Toolbar的Hidden状态
可能是不小心在Storyboard或代码里把Toolbar设为隐藏了:- 在Storyboard里选中Toolbar,看Attributes Inspector最顶部的Hidden选项是否未勾选
- 排查
viewDidLoad、viewWillAppear等方法里有没有toolbar.isHidden = true这类代码
清理缓存重启模拟器
模拟器缓存偶尔会搞出显示异常:- 先关闭iPhone 8 Plus模拟器
- 点击Xcode顶部菜单
Product->Clean Build Folder(快捷键Shift+Command+K)清理构建缓存 - 重启模拟器后重新运行项目
验证Safe Area适配问题
直接在Storyboard里切换到iPhone 8 Plus的预览模式,看看Toolbar是不是被Home指示器挡住了——如果之前约束绑的是父视图底部,就会出现这种“看似没显示,实际被遮挡”的情况。
如果以上方法都没用,你可以新建一个空白ViewController,只加Toolbar再运行到iPhone 8 Plus模拟器,这样能快速排除是不是项目其他代码干扰导致的问题。
内容的提问来源于stack exchange,提问作者Islam Nurdin
相关产品推荐
相关产品推荐

