ios - 带有左右栏项目的中心导航栏标题?

标签 ios swift uinavigationbar

我正在尝试设置导航栏标题,但到目前为止我尝试过的每种方法要么将标题移得太右,要么 View 根本无法加载并导致应用程序崩溃。这是我最近的尝试(应用程序崩溃)

    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 的,并且在我尝试将它们转换为 Swift 时效果不佳。

非常感谢!

最佳答案

设法让它与这个一起工作!

    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

关于ios - 带有左右栏项目的中心导航栏标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29459718/

相关文章:

ios - 关闭和呈现 MFMessageComposeViewController

ios - 以编程方式编辑 UIStackView

swift - 如何在 SwiftyJSON 中过滤 JSON 字典

ios - 将 UINavigationBar 标题与右侧按钮对齐,如 iOS13 消息应用程序

html - 简单导航栏不工作 : only blank div showing up

ios - 包含附近兴趣点的 map ,例如 dat-trucker 应用程序

ios - 字符串资源 Xcode + swift

android - 可能的动态 SSL 证书固定?

iphone - iPhone 和 iPad 的 Assets 命名

ios - iOS 7 导航栏上的 UIBarButtonItem setTitlePositionAdjustment