无论我走哪条路,我都遇到NSAtrributedString的问题,而且似乎无法弄清楚问题是什么。

使用下面的代码,我得到:Cannot invoke 'init' with an argument list of type '(string: StringLiteralConvertible, attributes: $T6)'

let cancelButtonTitle = NSAttributedString(string: "CANCEL", attributes: [NSFontAttributeName: buttonFont, NSForegroundColorAttributeName: UIColor.whiteColor()])

有什么想法可以解决这个问题吗?我已经在xcode 6.1和6.2中尝试过。

最佳答案

NSFontAttributeName应该设置为UIFont对象。

let buttonFont = UIFont.systemFontOfSize(10)

let cancelButtonTitle = NSAttributedString(string: "CANCEL",
    attributes: [NSFontAttributeName: buttonFont,
        NSForegroundColorAttributeName: UIColor.whiteColor()])

或者您使用的是特定字体。
if let buttonFont = UIFont(name: "Your Font", size: 10) {

    let cancelButtonTitle = NSAttributedString(string: "CANCEL",
    attributes: [NSFontAttributeName: buttonFont,
        NSForegroundColorAttributeName: UIColor.whiteColor()])
}

因为UIFont(name:,size:)构造函数返回optional,所以在NSAttributedString中使用它之前,需要将其解包

09-30 20:51