我正在尝试正确设置导航栏的样式,我需要将字体更改为helvetica neue,大小为19.我曾经使用过此代码,但我注意到现在效果不好:
navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 19)]
这是因为NSFontAttributeName的类型已更改为String,我已尝试使用
修复它navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: "HelveticaNeue-Light, 19"]
但编译器继续给我一个与字体中的磅值相关的错误,我该如何解决?
答案 0 :(得分:95)
UIFont
构造函数返回一个必须解包使用的可选(UIFont?
)。如果您确定自己拥有有效的字体名称,请添加!
:
Swift 4.2:
navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: UIFont(name: "HelveticaNeue-Light", size: 19)!]
Swift 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(...
来安全地打开使用前的字体。
答案 1 :(得分:50)
使用 Swift 4 不推荐使用NSFontAttributeName,您可以使用NSAttributedStringKey值来设置属性。
if let fontStyle = UIFont(name: "HelveticaNeue-Light", size: 19) {
navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.font: fontStyle]
}
Swift 4.2 NSAttributedStringKey
更改为NSAttributedString.Key
。
if let fontStyle = UIFont(name: "HelveticaNeue-Light", size: 19) {
navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: fontStyle]
}
有关NSAttributedStringKey的更多选项,您可以访问此链接https://developer.apple.com/documentation/foundation/nsattributedstringkey/
答案 2 :(得分:0)
Swift 4.2
NSAttributedStringKey在Swift 4.2中已重命名为NSAttributedString.Key
if let fontStyle = UIFont(name: "HelveticaNeue-Light", size: 19) {
navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: fontStyle]
}