You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iPhone X下UIBarButtonItem垂直向上对齐定位问题求助

解决iPhone X适配中Toolbar按钮顶部对齐的问题

嘿,这个适配问题我当初做iPhone X兼容的时候也踩过坑!你已经搞定了Toolbar高度调整这一步,接下来让按钮顶部对齐其实有两种很实用的方法,看你习惯哪种:

方法一:用自定义视图+约束精准控制

如果希望每个按钮的位置都能精准把控,最稳妥的方式是给UIBarButtonItem套一层自定义的UIButton,然后直接给按钮加顶部约束:

// 创建自定义按钮
let actionButton = UIButton(type: .system)
actionButton.setTitle("我的按钮", for: .normal)
actionButton.sizeToFit()

// 开启约束支持,设置顶部对齐
actionButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
    // 按钮顶部和Toolbar顶部留8pt间距(可根据需求调整)
    actionButton.topAnchor.constraint(equalTo: yourToolbar.topAnchor, constant: 8),
    // 按钮左侧和Toolbar左侧留16pt间距
    actionButton.leadingAnchor.constraint(equalTo: yourToolbar.leadingAnchor, constant: 16)
])

// 把自定义按钮包装成BarButtonItem
let barItem = UIBarButtonItem(customView: actionButton)
yourToolbar.setItems([barItem], animated: false)

如果是用Objective-C开发,代码逻辑是一致的:

UIButton *actionButton = [UIButton buttonWithType:UIButtonTypeSystem];
[actionButton setTitle:@"我的按钮" forState:UIControlStateNormal];
[actionButton sizeToFit];

actionButton.translatesAutoresizingMaskIntoConstraints = NO;
[NSLayoutConstraint activateConstraints:@[
    [actionButton.topAnchor constraintEqualToAnchor:yourToolbar.topAnchor constant:8],
    [actionButton.leadingAnchor constraintEqualToAnchor:yourToolbar.leadingAnchor constant:16]
]];

UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:actionButton];
[yourToolbar setItems:@[barItem] animated:NO];

方法二:调整Toolbar的内容内边距快速实现

如果不想给每个按钮都加自定义视图,也可以直接调整Toolbar的contentEdgeInsets,通过加大底部内边距的方式,把所有按钮往上挤:

// 假设你给Toolbar额外增加的高度是34(对应iPhone X的Home Indicator高度)
// 顶部留8pt间距,底部留34pt给Home Indicator,左右保持0
yourToolbar.contentEdgeInsets = UIEdgeInsets(top: 8, left: 0, bottom: 34, right: 0)

这种方式更快捷,适合Toolbar上按钮较多、不需要单独调整位置的场景。

额外提醒

其实苹果官方推荐的适配方式是让Toolbar自动适配Safe Area,也就是设置toolbar.safeAreaLayoutGuide相关约束,但既然你已经手动调整了Toolbar高度,上面的两种方法更贴合你的当前需求。

内容的提问来源于stack exchange,提问作者Casey Perkins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:27:06