【发布时间】:2017-04-18 21:46:18
【问题描述】:
我有一个自定义UINavigationBar:
class NavBar: UINavigationBar {
override init(frame: CGRect) {
super.init(frame: frame)
self.commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.commonInit()
}
private func commonInit() {
self.barTintColor = .orange
}
override func sizeThatFits(_ size: CGSize) -> CGSize {
return CGSize(width: UIScreen.main.bounds.width, height: 66)
}
}
当我设置titleView 和/或barButtonItems 时,它们不是垂直居中的:
class ViewController : UIViewController {
override func viewDidLoad() {
self.viewDidLoad()
self.edgesForExtendedLayout = []
let searchField = UITextField(frame: CGRect(x: 0, y: 0, width: 100, height: 44))
searchField.backgroundColor = .green
self.navigationItem.titleView = searchField
}
}
结果:
当UINavigationBar 的高度不是默认值时,如何将textView 和barButtonItems 垂直居中?
我已尝试设置 textView 的 bounds、frame - 不起作用。
与:
let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 44))
view.backgroundColor = .green
let searchField = UITextField(frame: CGRect(x: 0, y: -20, width: 100, height: 44))
searchField.backgroundColor = .red
view.addSubview(searchField)
self.navigationItem.titleView = view
我可以改变searchField的位置,但是好像我做错了。
我可以在NavBar 类中以某种方式设置UINavigationBar 'padding'/'margin' 或textView 和barButtonItem offset 吗?
【问题讨论】:
标签: ios objective-c swift uikit