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
相关产品推荐
相关产品推荐

