UIFont не конвертируется в UIFont?

Итак, сегодня вечером я обновил свой XCode до 7.3.

В одном из моих проектов я получаю следующую ошибку для нескольких ярлыков, где я устанавливаю шрифт:

'(name: String, size: CGFloat) -> UIFont' is not convertible to '(name: String, size: CGFloat) -> UIFont?'

РЕДАКТИРОВАТЬ: Это мой код для просмотра заголовка в панели навигации:

let aTitleFrame: CGRect = CGRectMake(0, aHeaderTitleSubtitleView.frame.midY / 2, 200, 24)
let aTitleView: UILabel = UILabel(frame: aTitleFrame)
aTitleView.backgroundColor = UIColor.clearColor()
aTitleView.font = UIFont(name: "Roboto-Regular", size: 15) // ERROR POPS UP HERE
aTitleView.textAlignment = NSTextAlignment.Center
aTitleView.textColor = UIColor.whiteColor()

Это мой код для строки атрибута для UILabel:

let aAttributedFundLabel: NSMutableAttributedString = NSMutableAttributedString(string: "Raising\n$ \(fund)")
aAttributedFundLabel.addAttribute(NSForegroundColorAttributeName, value: UIColor.darkGrayColor(), range: NSRange(location: 0, length: 7))
aAttributedFundLabel.addAttribute(NSFontAttributeName, value: UIFont(name: "Roboto-Regular", size: 15)!, range: NSRange(location: 0, length: 7)) // ERROR POPS UP HERE 
aAttributedFundLabel.addAttribute(NSForegroundColorAttributeName, value: UIColor.blackColor(), range: NSRange(location: 8, length: fund.characters.count + 2))
aAttributedFundLabel.addAttribute(NSFontAttributeName, value: UIFont(name: "Roboto-Regular", size: 16)!, range: NSRange(location: 8, length: fund.characters.count + 2)) // ERROR POPS UP HERE
startupFund.attributedText = aAttributedFundLabel

Это происходит только в двух файлах во всем моем проекте.

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

Есть идеи, почему это происходит?

ТИА!

3 ответа

Решение

В другом месте на SO, кто-то предлагает, где у вас есть это:

aTitleView.font = UIFont(name: "Roboto-Regular", size: 15)

... вы должны попробовать написать это:

aTitleView.font = UIFont.init(name: "Roboto-Regular", size: 15)

Я не могу взять кредит на себя (потому что я не могу воспроизвести ошибку), так что я просто догадываюсь! Но было бы очень интересно узнать, действительно ли это работает.

У меня тоже была эта проблема. Для меня было исправлено отключение оптимизации всего модуля.

Настройки Bulid> Swift Compiler - Генерация кода> Уровень оптимизации

Я установил его на Fastest (оптимизация всего модуля). Когда я установил его на None, у меня больше не было этой проблемы. Для контекста это смешанная кодовая база с Objective-C и Swift.

У меня была та же проблема, и это позволяет мне снова скомпилировать:

let descriptor = UIFontDescriptor(name: "OpenSans-Semibold", size: 10.0)
label.font = UIFont(descriptor: descriptor, size: 10.0)

Итак, используйте UIFontDescriptor ...

Также выполнение этого работает для меня:

if let font = UIFont(name: "OpenSans-Semibold", size: 10) {
    label.font = font
}
Другие вопросы по тегам