带有左右栏项目的中心导航栏标题?
Center nav bar title with right and left bar items?
我正在尝试设置导航栏标题,但到目前为止我尝试过的每种方法要么将标题移得太右,要么视图根本无法加载并导致应用程序崩溃。这是我最近的尝试(应用程序崩溃)
let rightItemSize = self.navigationItem.rightBarButtonItem?.width
let leftItemSize = self.navigationItem.leftBarButtonItem?.width
let navWidth = self.navigationController?.navigationBar.frame.size.width
let navHeight = self.navigationController?.navigationBar.frame.size.height
let titleWidth = navWidth! - (rightItemSize! + leftItemSize!)
let requiredPadding = rightItemSize! - leftItemSize!
var titleViewToAdd = UIView(frame: CGRectMake(0, 0, titleWidth, navHeight!))
var label = UILabel(frame: CGRectMake(requiredPadding, 0, titleWidth - requiredPadding, navHeight!))
label.backgroundColor = UIColor.redColor()
label.font = UIFont.boldSystemFontOfSize(14.0)
label.textColor = UIColor.blackColor()
label.numberOfLines = 1
label.textAlignment = NSTextAlignment.Center
label.text = "\(albumsArtist)"
titleViewToAdd.addSubview(label)
self.navigationItem.titleView = titleViewToAdd
如果我使用 self.navigationItem.title = "\(albumsArtist)"。文本居中并且效果很好,但最终我想要两行文本,但这种方法行不通。
我知道这里有类似的问题和答案,但我看过的所有问题都是针对 Objective-C 的,当我尝试将它们转换为 [=21 时效果不佳=].
非常感谢!
设法让它与这个一起工作!
let label = UILabel(frame: CGRect(x: 10, y: 0, width: 50, height: 40))
label.backgroundColor = .red
label.font = UIFont.boldSystemFont(ofSize: 14)
label.text = "My title"
label.numberOfLines = 2
label.textColor = .black
label.sizeToFit()
label.textAlignment = .center
self.navigationItem.titleView = label
我正在尝试设置导航栏标题,但到目前为止我尝试过的每种方法要么将标题移得太右,要么视图根本无法加载并导致应用程序崩溃。这是我最近的尝试(应用程序崩溃)
let rightItemSize = self.navigationItem.rightBarButtonItem?.width
let leftItemSize = self.navigationItem.leftBarButtonItem?.width
let navWidth = self.navigationController?.navigationBar.frame.size.width
let navHeight = self.navigationController?.navigationBar.frame.size.height
let titleWidth = navWidth! - (rightItemSize! + leftItemSize!)
let requiredPadding = rightItemSize! - leftItemSize!
var titleViewToAdd = UIView(frame: CGRectMake(0, 0, titleWidth, navHeight!))
var label = UILabel(frame: CGRectMake(requiredPadding, 0, titleWidth - requiredPadding, navHeight!))
label.backgroundColor = UIColor.redColor()
label.font = UIFont.boldSystemFontOfSize(14.0)
label.textColor = UIColor.blackColor()
label.numberOfLines = 1
label.textAlignment = NSTextAlignment.Center
label.text = "\(albumsArtist)"
titleViewToAdd.addSubview(label)
self.navigationItem.titleView = titleViewToAdd
如果我使用 self.navigationItem.title = "\(albumsArtist)"。文本居中并且效果很好,但最终我想要两行文本,但这种方法行不通。
我知道这里有类似的问题和答案,但我看过的所有问题都是针对 Objective-C 的,当我尝试将它们转换为 [=21 时效果不佳=].
非常感谢!
设法让它与这个一起工作!
let label = UILabel(frame: CGRect(x: 10, y: 0, width: 50, height: 40))
label.backgroundColor = .red
label.font = UIFont.boldSystemFont(ofSize: 14)
label.text = "My title"
label.numberOfLines = 2
label.textColor = .black
label.sizeToFit()
label.textAlignment = .center
self.navigationItem.titleView = label