Проблема создания CFAttributedString после обновления до Xcode 6.3 с Swift

Мой код, который рисует CFAttributedString в графический контекст, раньше работал нормально до обновления до Xcode 6.3.

Теперь после обновления я получаю следующие ошибки:

'_' is not convertible to 'CFString!'

а также

'[String : AnyObject]' is not convertible to '[String : AnyObject]'

для строк кода, которые определяют атрибуты для строки:

let attributes : [String:AnyObject] = [
            kCTForegroundColorAttributeName:UIColor.darkGrayColor().CGColor,
            kCTFontAttributeName:font
        ]

Вот как я рисую текст:

var attrString = CFAttributedStringCreate(nil,myString,attributes)
        var line = CTLineCreateWithAttributedString(attrString)
        var lineWidth = CTLineGetBoundsWithOptions(line, CTLineBoundsOptions.UseGlyphPathBounds).width
        var lineHeight = CTLineGetBoundsWithOptions(line, CTLineBoundsOptions.UseGlyphPathBounds).height
        CGContextSetTextMatrix(context, transformScale)
        CGContextSetTextPosition(context, (rect.width - lineWidth)/2, rect.height - lineHeight*1.5)
        CTLineDraw(line, context)

Я попытался привести kCTForegroundColorAttributeName и kCTFontAttributeName с добавлением "as String" после них. Это устранило ошибки, но строки, похоже, не получили атрибутов.

1 ответ

Решение

Я решил проблему, изменив форматирование и заменив kCTForegroundColorAttributeName на NSForegroundColorAttributeName

Вот фиксированная линия:

let attributes: [String: AnyObject] = [
            NSForegroundColorAttributeName : UIColor.darkGrayColor().CGColor,
            NSFontAttributeName : font
        ]
Другие вопросы по тегам