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

iOS开发:如何在键盘UIToolbar工具栏中居中显示UILabel?

问题原因

你当前的布局逻辑是让标签在「左侧透明按钮右边缘」和「右侧done按钮左边缘」的中间区域居中,但由于透明按钮和系统done按钮的宽度不一致,最终标签无法对齐整个UIToolbar的水平中心。

最优解决方案

直接将标签作为子视图添加到UIToolbar上,通过约束强制对齐工具栏中心,不受左右两侧按钮宽度影响,修改后的setToolBarOnKeyboard代码如下:

func setToolBarOnKeyboard() {
    let toolBar = UIToolbar()
    toolBar.sizeToFit()
    
    let invisibleDummyButton = UIBarButtonItem(customView: dummyToolBarButton)
    let flexibleSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(dismissKeyboard))
    
    // 工具栏仅保留左右元素和弹性占位
    toolBar.setItems([invisibleDummyButton, flexibleSpace, doneButton], animated: false)
    
    // 直接添加标签到工具栏,约束强制居中
    toolBar.addSubview(timerLabel)
    NSLayoutConstraint.activate([
        timerLabel.centerXAnchor.constraint(equalTo: toolBar.centerXAnchor),
        timerLabel.centerYAnchor.constraint(equalTo: toolBar.centerYAnchor)
    ])
    
    textView.inputAccessoryView = toolBar
}

如果你需要保留原有UIBarButtonItem的添加方式,也可以将左侧透明按钮的宽度设置为和右侧done按钮宽度一致,两个弹性空间就会平分剩余宽度,也能实现居中效果。

内容的提问来源于stack exchange,提问作者Lance Samaria

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:15:04