2014-10-09 17 views
11

vì vậy tôi đang viết ứng dụng này có thanh điều hướng đầy màu sắc và phông chữ của tiêu đề trong các thanh đó và phông chữ của UIBarButtonItems phải có màu trắng và trong một phông chữ cụ thể. Tôi sử dụng những 2 dòng để thực hiện điều đó trong appdelegate ..Xcode 6.1 titleTextAttributes

UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : UIFont(name: "SourceSansPro-Regular", size: 22), NSForegroundColorAttributeName : UIColor.whiteColor()] 
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName : UIFont(name: "SourceSansPro-Regular", size: 22), NSForegroundColorAttributeName : UIColor.whiteColor()], forState: .Normal) 

Nhưng với Xcode 6.1 Tôi nhận được một lỗi trong mỗi dòng và tôi thực sự không biết, những gì trong phương tiện ..

enter image description here

Thuộc tính văn bản là [NSObject: AnyObject] ?. Đó là chính xác những gì tôi đã viết xuống .. Có ai có một giải pháp cho điều này?

Trả lời

37

Tôi nghĩ rằng vấn đề là bởi vì họ đã thay đổi UIFont 's initializer trong 6.1 để nó có thể trả lại nil. Đó là hành vi chính xác bởi vì nếu bạn nhập sai tên phông chữ không có cách nào để nhanh chóng UIFont. Trong trường hợp này, từ điển của bạn sẽ trở thành [NSObject: AnyObject?] không giống với từ [NSObject: AnyObject]. Trước tiên, bạn có thể khởi tạo phông chữ và sau đó bạn có thể sử dụng cú pháp if let. Dưới đây là cách thực hiện điều này

let font = UIFont(name: "SourceSansPro-Regular", size: 22) 
if let font = font { 
    UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : font, NSForegroundColorAttributeName : UIColor.whiteColor()] 
} 

Hoặc nếu bạn chắc chắn đối tượng phông chữ sẽ không là nil bạn có thể sử dụng cú pháp tùy chọn chưa được khai báo hoàn toàn. Trong trường hợp này, bạn có nguy cơ bị lỗi thời gian chạy. Đây là cách làm.

UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : UIFont(name: "SourceSansPro-Regular", size: 22)!, NSForegroundColorAttributeName : UIColor.whiteColor()] 
+0

Vâng, đúng vậy! Cảm ơn nhiều. Tôi nghĩ rằng nó rất khó hiểu rằng một người khởi xướng có thể trở lại nil nhưng nó có ý nghĩa .. :) – Ben

+0

Yêu nó cảm ơn! –

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