Проблема создания 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
]