使用CoreText在iOS 6中设置NSAttributedString的颜色不起作用

时间:2013-09-30 18:50:53

标签: ios objective-c text core-text nsattributedstring

我有以下代码:

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:_textView.text];
NSRange totalRange = NSMakeRange(0, [attributedString length]);
[attributedString addAttribute:(id)kCTForegroundColorAttributeName
                         value:(id)[UIColor yellowColor].CGColor
                         range:totalRange];

其中,在iOS 6上运行时,总是会使字符串显示为红色。

有趣的是CoreText适用于指定字体,如下所示:

[attributedString addAttribute:(id)kCTFontAttributeName
                         value:[UIFont boldSystemFontOfSize:20]
                         range:specialFontRange];

以这种方式设置颜色可以正常工作:

[attributedString addAttribute:NSForegroundColorAttributeName
                         value:[UIColor yellowColor]
                         range:totalRange];

但出于兼容性原因,我必须使用CoreText。关于如何使用CoreText在iOS 6中指定颜色的任何想法?

1 个答案:

答案 0 :(得分:0)

这实际上取决于你如何绘制文本。如果您使用的是-(void)drawInRect:(CGRect)rect;-(void)drawAtPoint:(CGPoint)point;(仅适用于iOS6或更高版本),则必须使用constants section of NSAttributedString Additions Reference中指定的常量。例如,要设置文本颜色,必须使用键NSForegroundColorAttributeName

如果您使用Core Graphics进行绘图,则需要坚持使用Core Text String Attributes Reference中指定的常量。