2014-10-24 17 views
5

Các mã sau đây đã được chạy tốt trước khi cập nhật để Xcode 6.1 để ở lại với iOS 8.1:Can not Đặt Navigation Bar Font trong Swift trên phiên bản mới nhất Xcode

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()] 
} 

Vấn đề là cụ thể trong NSFontAttributeName: UIFont(name: "Lobster 1.4", size: 34)

và lỗi tôi nhận được ở đây là:

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

tôi tìm thấy mã độc đáo này trên một ques StackOverflow khác nhau tion và nó đã làm việc như mong đợi cho đến khi bản cập nhật này (tải về nó ngày hôm qua). Phông chữ của tôi thực sự được cài đặt đúng cách.

Tôi có nên viết mã này khác đi ngay bây giờ hoặc có cách hoàn toàn mới trong đó tôi nên đặt Phông chữ thanh điều hướng của mình không?

Cảm ơn!

Trả lời

20

Rất tiếc. Tôi đã tự tìm ra điều này:

Tôi cần một dấu chấm than sau khi khai báo NSFontAttributeName vì nó yêu cầu loại "NSString!". Có lẽ nó chỉ yêu cầu một "NSString" trước đây, nhưng bây giờ tôi không có vấn đề gì cả.

dòng làm việc:

NSFontAttributeName: UIFont(name: "Lobster 1.4", size: 24)! 

Làm việc mã đầy đủ:

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()] 
} 

Có vẻ như một câu hỏi ngớ ngẩn bây giờ. Hy vọng điều này sẽ giúp người khác!

1

Bạn đang sử dụng UIFont(name: intializer vì nó được định nghĩa là

init?(name fontName: String, size fontSize: CGFloat) -> UIFont

failable intializer đọc thêm từ link.So nó đang trở lại optional.You cần phải Unwrap nó vì nó đòi hỏi AnyObject không bắt buộc.

self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "Lobster 1.4", size: 34)!, NSForegroundColorAttributeName: UIColor.whiteColor()] 
1

Cảm ơn Benji !!!

Tôi đã thay đổi nó một chút và áp dụng nó cho thuộc tính xuất hiện của bộ điều khiển điều hướng.

var navigationBarAppearance = UINavigationBar.appearance() 

    navigationBarAppearance.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "OpenSans", size: 16)!, NSForegroundColorAttributeName: UIColor.whiteColor()] 
1

Nó là tốt hơn để khai báo phông chữ của bạn như có điều kiện, như theo cách này:

if let font = UIFont (name: "AdobeArabic-BoldItalic", size: 20) { 
      UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: font] 
     } 

Việc làm này, làm cho chắc chắn rằng phông chữ của bạn đã được tìm thấy, mà tôi đã cài đặt font mới, và khi sử dụng nó mà không có điều kiện nếu, nó đã ban hành một ngoại lệ, của unwrapping một tùy chọn.

0
override func viewWillLayoutSubviews() { 

    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor(), NSFontAttributeName : UIFont(name: "Roboto-Regular", size: 14)!] 
} 
Các vấn đề liên quan