我使用了这段代码
self.navigationController?.navigationBar.titleTextAttributes =
[NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 20),
NSForegroundColorAttributeName: UIColor.whiteColor()]
我收到错误"无法找到接受所提供参数的“init”的重载"
答案 0 :(得分:14)
UIFont(name:size:)
现在是一个可用的初始化程序 - 如果它无法找回返回值,它将无法找到该字体并使您的应用崩溃,它将返回nil
。使用此代码安全地获取字体并使用它:
if let font = UIFont(name: "HelveticaNeue-Light", size: 20) {
self.navigationController?.navigationBar.titleTextAttributes =
[NSFontAttributeName: font,
NSForegroundColorAttributeName: UIColor.whiteColor()]
}
答案 1 :(得分:0)
使用此
self.navigationController?.navigationBar.titleTextAttributes =
[NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 20)!,
NSForegroundColorAttributeName: UIColor.whiteColor()!]
或者这个
if let font = UIFont(name:"HelveticaNeue-Light", size: 20.0) {
self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor(), NSFontAttributeName: font]
}
答案 2 :(得分:0)
另一种方法是在设置titleTextAttributes
之前建立字典。这只是为了避免使用其他方法,如果您想使用可用的初始化程序设置更多参数,这将更有用。例如:
var attributes : [NSObject : AnyObject] = [NSForegroundColorAttributeName : UIColor.whiteColor()]
if let font = UIFont(name: "Helvetica", size: 20) {
attributes[NSFontAttributeName] = font
}
if let someData = NSData(contentsOfFile: "dataPath") {
attributes["imageData"] = someData
}
self.myObject.attributes = attributes