Ответ 1
Я думаю, проблема в том, что они изменили инициализатор UIFont
в 6.1, чтобы он мог вернуться nil
. Это правильное поведение, потому что, если вы вводите неправильное имя шрифта, невозможно создать экземпляр UIFont
. В этом случае ваш словарь становится [NSObject: AnyObject?]
, который не совпадает с [NSObject: AnyObject]
. Вы можете сначала инициализировать шрифты, а затем использовать синтаксис if let
. Вот как это сделать
let font = UIFont(name: "SourceSansPro-Regular", size: 22)
if let font = font {
UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : font, NSForegroundColorAttributeName : UIColor.whiteColor()]
}
Или, если вы уверены, что объект шрифта не будет nil
, вы можете использовать неявно разворачиваемый необязательный синтаксис. В этом случае вы рискуете столкнуться во время выполнения. Вот как это сделать.
UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : UIFont(name: "SourceSansPro-Regular", size: 22)!, NSForegroundColorAttributeName : UIColor.whiteColor()]