1

我有以下代码:

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 中指定颜色的任何想法?

4

1 回答 1

0

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

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

于 2013-10-08T21:56:20.060 回答