UITextView中的属性文本无法正常工作

时间:2014-05-03 18:10:36

标签: ios uitextview

我正在使用下面的代码尝试设置UITextView中文本子字符串的颜色,但它不起作用。看起来应该很简单;我错过了什么?

NSMutableAttributedString *title = [[NSMutableAttributedString alloc]initWithString:@"Welcome"];
UIFont *font = [UIFont fontWithName:@"Avenir-Light" size:10];
[title addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, title.length)];
[title addAttribute:kCTForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, title.length)];

descriptionCommentLabel.attributedText = title;

2 个答案:

答案 0 :(得分:1)

您应该将kCTForegroundColorAttributeName替换为NSForegroundColorAttributeName。您可以在此文件的常量部分中检查有效属性的列表:Apple docs: NSAttributedString UIKit additions。你的代码现在是:

NSMutableAttributedString *title = [[NSMutableAttributedString alloc]initWithString:@"Welcome"];
UIFont *font = [UIFont fontWithName:@"Avenir-Light" size:10];
[title addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, title.length)];
[title addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, title.length)];

在iOS 5及更早版本中使用kCT...属性,当UIKit不支持NSAttributedString时,您不得不使用CoreText。

答案 1 :(得分:1)

将代码中的以下行更改为:

[title addAttribute:kCTForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, title.length)];

[title addAttribute:NSForegroundColorAttributeNamevalue:[UIColor redColor] range:NSMakeRange(0, title.length)];