2014-10-28 89 views
6

我想更改导航栏中的字体。但是下面的代码不起作用,它会导致应用程序崩溃。更改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我的项目,所以它应该是能够找到它。

回答

15

UIFont()是一个failable initalizer,它可能由于几个原因失败。使用!强制解包会导致应用崩溃。

更好的单独初始化和检查的成功:

if let font = UIFont(name: "Lato-Light.ttf", size: 34) { 
    UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: font] 
} 

,并检查您的字体文件包含在捆绑资源。

Common Mistakes With Adding Custom Fonts to Your iOS App

+0

我尝试添加一个println(“代码执行”),它不打印到控制台如此明确的代码不执行的一部分。我在我的应用程序中使用字体,所以我知道它在那里。我想知道为什么它找不到字体? – 2014-10-28 10:32:20

+0

检查项目目标并查看它是否包含在捆绑资源中。 – zisoft 2014-10-28 10:33:12

+0

如何检查它是否包含在内?对不起,我对此有点新。 – 2014-10-28 10:43:00

2
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 
     } 
    } 

}