2014-10-28 6 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)

Я действительно добавил шрифт Lato-Light.ttf к моему проекту поэтому он должен быть в состоянии найти его ,

ответ

15

UIFont() является неисправным инициализатором, он может не работать по нескольким причинам. Принудительное развертывание с использованием ! приводит к сбою вашего приложения.

Лучше инициализировать его отдельно и проверить на успех:

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 («код выполняется»), и он не печатает на консоль так ясно, что часть кода не выполняет. Я использую шрифт в своем приложении, поэтому я знаю, что он есть. Интересно, почему он не может найти шрифт? –

+0

Проверьте цель проекта и посмотрите, включен ли он в ресурсы пакета. – zisoft

+0

Как проверить, включено ли оно? К сожалению, я немного новичок в этом. –

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

} 
Смежные вопросы