在文本属性字典中实例化UIFont时出错

Eil*_*lon 14 cocoa-touch compiler-errors uibarbuttonitem ios swift

我正在尝试设置UIBarButtonItem类似的字体:

let barButton = UIBarButtonItem.appearance()
barButton.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "AvenirNext", size: 15], forState: UIControlState.Normal)
Run Code Online (Sandbox Code Playgroud)

但是它会抛出一个编译错误:

无法使用参数列表类型'($ T7,forState:UIControlState)调用'init'

我不知道这意味着什么.我也试过了

barButton.titleTextAttributesForState(UIControlState.Normal) =[NSFontAttributeName...]` 
Run Code Online (Sandbox Code Playgroud)

但似乎它不可转让

我该如何解决这个问题?

zis*_*oft 27

UIFont返回的初始化程序是可选的,因为它可能由于拼写错误的字体名称而失败等.

你必须打开它并检查:

if let font = UIFont(name: "AvenirNext", size: 15) {
    barButton.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal)
}
Run Code Online (Sandbox Code Playgroud)

更新为Swift 3

if let font = UIFont(name: "AvenirNext", size: 15) {
    barButton.setTitleTextAttributes([NSFontAttributeName:font], for: .normal)
}
Run Code Online (Sandbox Code Playgroud)