Подтвердить что ты не робот

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

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

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

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

EDIT: Это мой код для Title View в панели навигации:

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

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

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

Любая идея, почему это происходит?

ТИА!

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

Настройки будильникa > Быстрый компилятор - Генерация кодa > Уровень оптимизации

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

Ответ 3

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

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
}