更改Swift导航栏中的字体
问题描述:
我想更改导航栏中的字体。但是下面的代码不起作用,它会导致应用程序崩溃。更改Swift导航栏中的字体
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: UIFont(name: "Lato-Light.ttf", size: 34)!]
return true
}
我收到以下错误:
致命错误:unexpectedly found nil while unwrapping an Optional value(lldb)
我确实增加了字体拉托-Light.ttf我的项目,所以它应该是能够找到它。
答
UIFont()
是一个failable initalizer,它可能由于几个原因失败。使用!
强制解包会导致应用崩溃。
更好的单独初始化和检查的成功:
if let font = UIFont(name: "Lato-Light.ttf", size: 34) {
UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: font]
}
,并检查您的字体文件包含在捆绑资源。
答
import UIKit
class TestTableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
configureView()
}
func configureView() {
// Change the font and size of nav bar text
if let navBarFont = UIFont(name: "HelveticaNeue-Thin", size: 20.0) {
let navBarAttributesDictionary: [NSObject: AnyObject]? = [
NSForegroundColorAttributeName: UIColor.whiteColor(),
NSFontAttributeName: navBarFont
]
navigationController?.navigationBar.titleTextAttributes = navBarAttributesDictionary
}
}
}
我尝试添加一个println(“代码执行”),它不打印到控制台如此明确的代码不执行的一部分。我在我的应用程序中使用字体,所以我知道它在那里。我想知道为什么它找不到字体? – 2014-10-28 10:32:20
检查项目目标并查看它是否包含在捆绑资源中。 – zisoft 2014-10-28 10:33:12
如何检查它是否包含在内?对不起,我对此有点新。 – 2014-10-28 10:43:00