2

我的应用程序中有以下代码

NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:self.myDisplayTxt];
      [string addAttribute:(NSString*)kCTForegroundColorAttributeName 
                     value:(id)[[UIColor redColor] CGColor]
                     range:NSMakeRange(0,5)];

    self.myTextView.text = string;

将 NSMutableAttributedString 分配给 UITextView 时,出现以下错误:

不兼容的目标 c 类型 struct NSMutableAttributedString 预期的 struct nsstring

所以请告诉我,如何在 UITextView 中显示 NSMutableAttributedString。

4

3 回答 3

2

您可以尝试使用一些库来做到这一点。正如 omz 所写,不幸的是 UITextView 并不支持NSAttributedString.

也许这个可以帮助你:https ://github.com/enormego/EGOTextView

他们对这个库的评价如下:

UITextView 替换为对 NSAttributedString 的额外支持。

更新:根据您在评论中对 omz 答案的澄清,您可以在此处查看: Underline text inside uitextview

更新 2:iOS 6中,您可以使用开箱即用的 NSAttributedString。例如像这样:

UIColor *_red=[UIColor redColor];
UIFont *font=[UIFont fontWithName:@"Helvetica-Bold" size:72.0f];
[attString addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, _stringLength)];
[attString addAttribute:NSStrokeColorAttributeName value:_red range:NSMakeRange(0, _stringLength)];
[attString addAttribute:NSStrokeWidthAttributeName value:[NSNumber numberWithFloat:-3.0] range:NSMakeRange(0, _stringLength)];
于 2012-04-25T10:21:22.140 回答
0

你不能,UITextView不支持属性字符串。如果您真的只想使用属性字符串来设置前景色(如您的示例中所示),您可以通过设置文本视图的textColor属性来实现相同的目的。

于 2012-04-25T09:51:00.363 回答
0

您应该通过属性分配属性字符串UITextView.attributedTextUITextView.text仅接受NSString或纯文本。

textView.attributedText = attributedString;

请参阅文档:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextView_Class/index.html#//apple_ref/occ/instp/UITextView/attributedText

于 2015-01-07T11:16:32.300 回答