2

我正在尝试设置数组中所有范围的颜色,但出现此错误。我不明白为什么。范围都是有效的。我什至尝试手动插入一个范围来测试它。谢谢你。

CGContextSetFillColorWithColor:无效的上下文 0x0

NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:tv.text];

for (NSString * s in array) {
        [string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSRangeFromString(s)];
}

CATextLayer *textlayer = [[CATextLayer alloc]init];
textlayer.frame = CGRectMake(0, 0, 320, 480);
[self.view.layer addSublayer:textlayer];
textlayer.string = @"aString"; //works
textlayer.string = string; //does not work
tv.text = @"";
4

2 回答 2

9

代码示例与您尝试构建的代码完全相同吗?我很确定NSForegroundColorAttributeName仅在 Mac OS X SDK 和 iOS 6.0 及更高版本中可用,因此示例代码甚至不应该编译。

你想要的可能是kCTForegroundColorAttributeName传递 aCGColorRef而不是 a NSColor

[string addAttribute:(id)kCTForegroundColorAttributeName
               value:(id)[UIColor redColor].CGColor
               range:NSRangeFromString(s)];

但我不确定这是否真的是无效上下文错误的原因。

于 2012-07-30T20:29:07.477 回答
0

您的上下文是错误的,而不是您的范围。您正在尝试设置没有颜色的东西的颜色。

于 2012-07-30T19:48:11.833 回答