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
}