导航集titleTextAttributes由swift3,Xcode 8.3失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了导航集titleTextAttributes由swift3,Xcode 8.3失败相关的知识,希望对你有一定的参考价值。

我希望我的导航标题使用TruncationMiddle,如“ABC ... XYZ”。 我尝试这样做,但我失败了。 谢谢。

self.title = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineBreakMode = .byTruncatingMiddle

self.navigationController!.navigationBar.titleTextAttributes = [NSParagraphStyleAttributeName: paragraphStyle]

我的项目失败了 Link of my project in GitHub.

更新图片:

enter image description here

答案

你实际上需要使用NSMutableParagraphStyle而不是NSParagraphStyle

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineBreakMode = .byTruncatingMiddle

self.navigationController?.navigationBar.titleTextAttributes = [NSParagraphStyleAttributeName: paragraphStyle]

然后lineBreakMode属性有一个setter,你可以使用它而不是直接使用NSParagraphStyle类和truncationMode键不允许的键设置值。

另一答案

尝试在导航栏中添加自定义标签。

let label = UILabel(frame: CGRect(x:0, y:0, width:400, height:50))
label.backgroundColor = UIColor.clear
label.numberOfLines = 1
label.font = UIFont.boldSystemFont(ofSize: 13.0)
label.textAlignment = .center
label.textColor = UIColor.black
label.lineBreakMode = .truncateMiddle

self.navigationItem.titleView = label 

// OR 

// self.navigationController!.navigationBar.topItem.titleView =  label

你也可以在标签中显示多行,然后只需将numberOfLines设置为0,将linebreak模式设置为worldwrap :)

希望它有所帮助

另一答案

您只需在代码中添加以下行:

    self.title = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
    let navLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 40))
    navLabel.text = self.title
    navLabel.textColor = .white
    navLabel.font = UIFont(name: "Helvetica-Bold", size: 14.0)
    navLabel.backgroundColor = .clear
    navLabel.adjustsFontSizeToFitWidth = false
    navLabel.lineBreakMode = .byTruncatingMiddle
    self.navigationItem.titleView = navLabel

以上是关于导航集titleTextAttributes由swift3,Xcode 8.3失败的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationBar titleTextAttributes 从视图控制器返回后未更新

Swift 设置导航栏透明

更改导航栏项目字体大小

更改导航栏标题字体 - swift

更改导航栏后退按钮的粗细

UINavigationBar.titleTextAttributes 支持哪些属性?