尝试这段代码:
注意: 代码在Swift 3中测试通过。
答案1: 更新的答案
class ViewController: UIViewController {
var customBar: UINavigationBar = UINavigationBar()
override func viewDidLoad() {
super.viewDidLoad()
title = "Some Title"
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(addTapped))
navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: self, action: #selector(addTapped))
self.customBar.frame = CGRect(x:0, y:0, width:view.frame.width, height:(navigationController?.navigationBar.frame.height)! + 50)
self.customBar.backgroundColor = UIColor.green
self.view.addSubview(customBar)
}
func addTapped() {
print("Button Pressed")
}
输出:
![enter image description here](https://istack.dev59.com/LQj51.webp)
答案2:
override var isViewLoaded: Bool {
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(addTapped))
navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: self, action: #selector(addTapped))
navigationItem.leftBarButtonItem?.setTitlePositionAdjustment(UIOffset(horizontal: 0, vertical: 20), for: UIBarMetrics.default)
navigationItem.rightBarButtonItem?.setTitlePositionAdjustment(UIOffset(horizontal: 0, vertical: 20), for: UIBarMetrics.default)
return true
}
func addTapped() {
print("Button Pressed")
}
注意: 上述代码仅在 isViewLoaded: Bool 方法中有效。但是,当我尝试在其他 viewLoad 方法中使用此代码时,没有运气。
输出 1: barButtonItem 垂直上移了 20 像素。
![enter image description here](https://istack.dev59.com/bIuPJ.webp)
输出 2:barButtonItem 垂直向下移动了20个像素。
![enter image description here](https://istack.dev59.com/QdoC5.webp)
希望以上代码解决了你的问题。