使用Swift升级到Xcode 6.3后,无法创建CFAttributedString

时间:2015-04-12 19:16:13

标签: xcode swift core-foundation

我的代码,它将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)

我尝试在其后面添加“as String”来强制转换kCTForegroundColorAttributeName和kCTFontAttributeName。这删除了错误,但字符串似乎没有得到属性。

1 个答案:

答案 0 :(得分:1)

我通过更改格式并通过用NSForegroundColorAttributeName替换kCTForegroundColorAttributeName来解决问题

以下是固定行:

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