NSMutableAttributedString不显示iOS 8和8中某些特定范围的不同颜色的字符串。 iOS 9

时间:2015-10-20 07:08:53

标签: ios objective-c nsstring nsattributedstring

我在代码中使用属性字符串。设置字体&某些特定范围的文字颜色。 为此,我使用下面的代码。 字体适用于范围,但未为该范围设置颜色。 NSForegroundColorAttributeName可能存在一些问题。

如果有人有解决方案,请告诉我。

See font of "New" is set but not color

NSDictionary *attrs = @{ NSFontAttributeName:[UIFont systemFontOfSize:12.0f],NSForegroundColorAttributeName : [UIColor redColor] };


NSMutableAttributedString *titleStr = [[NSMutableAttributedString alloc]initWithString:@"New Message from Test"];
                [titleStr addAttributes:attrs range:NSMakeRange(0, 3)];

3 个答案:

答案 0 :(得分:1)

我也面临类似的问题。所以我将我的字符串作为HTML字符串传递,并按照这样完成。

NSString *name = @"<center><font color='#cd1c5f' size='4px'>"
                 @"New"
                 @"</font>"
                 @"<font color='#000000' size='4px'>"
                 @"Message from test"
                 @"</font></center>";

NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[name dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];

_lbl_nm.attributedText=attrStr;

答案 1 :(得分:0)

检查>设置属性标题后是否更改标签的文本颜色。这是你将面临这个问题的唯一方法。在之前>设置标题。

cell.textLabel.textColor = [UIColor grayColor];
cell.textLabel.attributedText = titleStr;

我发现您的代码没有任何问题。我只是复制了你的代码并进行了测试,一切都很好。

enter image description here

答案 2 :(得分:0)

您可以附加两个属性字符串,其中包含不同的红色和&amp;属性。文字颜色。让我们尝试使用以下代码块。

NSDictionary *attrs = @{NSForegroundColorAttributeName:[UIColor redColor], NSFontAttributeName:[UIFont systemFontOfSize:12.0]};
NSMutableAttributedString *titleString = [[[NSMutableAttributedString alloc] initWithString:@"New" attributes:attrDict] autorelease];
attrs = @{NSForegroundColorAttributeName:[UIColor lightTextColor], NSFontAttributeName:[UIFont systemFontOfSize:12.0]};
NSAttributedString *messageString = [[[NSAttributedString alloc] initWithString:@" Message from Test" attributes:attrs] autorelease];
[titleString appendAttributedString:messageString];
[self.titleTextView setAttributedText:titleString];