一尘不染

NSFontAttributeName已更改为String

swift

我正在尝试正确设置导航栏的样式,我需要将字体更改为大小为19的helvetica neue。我曾经使用过此代码,但我注意到现在也无法正常工作:

navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 19)]

发生这种情况是因为NSFontAttributeName的类型已更改为String,我尝试使用

navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: "HelveticaNeue-Light, 19"]

但是编译器继续给我一个与字体磅值有关的错误,我该如何解决?


阅读 236

收藏
2020-07-07

共1个答案

一尘不染

UIFont构造函数返回一个可选的(UIFont?),你必须拆开包装使用。添加!如果你确保你有一个有效的字体名称:

Swift 4.2:

navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: UIFont(name: "HelveticaNeue-Light", size: 19)!]

斯威夫特4:

navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Light", size: 19)!]

斯威夫特3:

navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 19)!]

注意:
如果要在代码中设置带有静态名称的字体,则在确认使用了有效的字体名称后,强制展开是安全的。如果要从外部来源(用户或服务器)获取字体名称,则将要使用
可选绑定, 例如if let font = UIFont(...或,guard let font = UIFont(...以便在使用前安全地解开字体。

2020-07-07