无法在最新Xcode版本的Swift中设置导航栏字体

Ben*_*nji 6 xcode uinavigationcontroller navbar ios swift

在更新到Xcode 6.1之前,以下代码运行正常,以便与iOS 8.1保持同步:

override func viewDidAppear(animated: Bool) {  
     self.navigationController?.navigationBar.topItem?.title = "Home"
     self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "Lobster 1.4", size: 34),  NSForegroundColorAttributeName: UIColor.whiteColor()]
}
Run Code Online (Sandbox Code Playgroud)

问题具体在于 NSFontAttributeName: UIFont(name: "Lobster 1.4", size: 34)

而我在这里得到的错误是:

! "Could not find an overload for 'init' that accepts the supplied arguments"

我在另一个StackOverflow问题上找到了这个原始代码,它在预期之前正常工作,直到此更新(昨天下载).我的字体确实正确安装.

我现在应该以不同的方式编写此代码,还是有一种全新的方式来设置导航栏字体?

谢谢!

Ben*_*nji 21

哎呦.我自己想出来了:

我声明NSFontAttributeName后需要一个感叹号,因为它需要一个类型"NSString!".也许它之前只需要一个"NSString",但我现在没有问题.

工作线:

NSFontAttributeName: UIFont(name: "Lobster 1.4", size: 24)!
Run Code Online (Sandbox Code Playgroud)

工作完整代码:

override func viewDidAppear(animated: Bool) {  
     self.navigationController?.navigationBar.topItem?.title = "Home"
     self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "Lobster 1.4", size: 34)!,  NSForegroundColorAttributeName: UIColor.whiteColor()]
}
Run Code Online (Sandbox Code Playgroud)

现在看来似乎是一个愚蠢的问题.希望这有助于其他人!