我已经设法通过使用我自己的导航栏更改导航栏高度,但标题仍然居中。我希望它位于左侧72px的位置。
override func sizeThatFits(size: CGSize) -> CGSize {
return CGSizeMake(UIScreen.mainScreen().bounds.width, 56)
}
我用它来改变高度,但我没有办法改变所有物品的位置。我试着设置框架,但我不能。我也无法改变按钮的位置。
我想看起来像这样
创建一个UIView
对象,在其中添加UIButton
和UILabel
以显示类似的视图。将此自定义视图添加到导航控制器的左栏按钮项。
可视化自定义视图和相关代码的示例屏幕截图:
override func viewDidLoad() {
super.viewDidLoad()
var customView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 100.0, height: 44.0))
customView.backgroundColor = UIColor.yellow
var button = UIButton.init(type: .custom)
button.setBackgroundImage(UIImage(named: "hamburger"), for: .normal)
button.frame = CGRect(x: 0.0, y: 5.0, width: 32.0, height: 32.0)
button.addTarget(self, action: #selector(menuOpen(button:)), for: .touchUpInside)
customView.addSubview(button)
var marginX = CGFloat(button.frame.origin.x + button.frame.size.width + 5)
var label = UILabel(frame: CGRect(x: marginX, y: 0.0, width: 65.0, height: 44.0))
label.text = "Inbox"
label.textColor = UIColor.white
label.textAlignment = NSTextAlignment.right
label.backgroundColor = UIColor.red
customView.addSubview(label)
var leftButton = UIBarButtonItem(customView: customView)
self.navigationItem.leftBarButtonItem = leftButton
}
func menuOpen(button: UIButton) {
// Handle menu button event here...
}
navBar.setTitleVerticalPositionAdjustment(CGFloat(7), forBarMetrics: UIBarMetrics.Default)
另一种解决方案是简单地缩进标题:
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.firstLineHeadIndent = 72
navigationBar.titleTextAttributes = [
.foregroundColor: UIColor.purple,
.paragraphStyle: paragraphStyle
]