2014-10-28 32 views
6

Tôi muốn thay đổi phông chữ trong thanh điều hướng. Tuy nhiên, mã sau không hoạt động, nó khiến ứng dụng gặp sự cố.Thay đổi phông chữ trong thanh điều hướng ở Swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: UIFont(name: "Lato-Light.ttf", size: 34)!] 

    return true 
} 

Tôi nhận được lỗi sau:

lỗi nghiêm trọng: unexpectedly found nil while unwrapping an Optional value(lldb)

Tôi đã thực sự thêm font Lato-Light.ttf cho dự án của tôi vì vậy nó sẽ có thể tìm thấy nó .

Trả lời

15

UIFont() là một initalizer failable, nó có thể thất bại do nhiều lý do. Một unwrap buộc sử dụng ! làm hỏng ứng dụng của bạn.

Better khởi tạo nó một cách riêng biệt và kiểm tra thành công:

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

Và kiểm tra xem tập tin phông chữ của bạn được bao gồm trong các tài nguyên bó.

Common Mistakes With Adding Custom Fonts to Your iOS App

+0

tôi đã cố gắng thêm một println ("Mã thực thi") và nó không in ra cửa sổ Console như vậy rõ ràng rằng một phần của mã không thực thi. Tôi đang sử dụng phông chữ trong ứng dụng của mình, vì vậy tôi biết nó ở đó. Tôi tự hỏi tại sao nó không thể tìm thấy phông chữ? –

+0

Kiểm tra mục tiêu của dự án và xem liệu nó có được bao gồm trong tài nguyên của gói hay không. – zisoft

+0

Làm cách nào để kiểm tra xem nó có được bao gồm không? Xin lỗi, tôi là một chút mới này. –

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

} 
Các vấn đề liên quan