iOS:如何更改字符串的某些字符的颜色/字体

时间:2018-02-05 08:50:09

标签: ios objective-c nsstring nsattributedstring

在我的应用中,我必须更改来自string响应的 JSON 部分的字体

> "<span class=\"drop_data_user\">Andrew James</span> liked your comment
> \"hiiiiiiiiiiiiiii\" that you posted."

将其转换为属性字符串我使用以下代码

NSAttributedString *attr = [[NSAttributedString alloc] initWithData:[NotificationTxt dataUsingEncoding:NSUTF8StringEncoding]
                                                                options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
                                                                          NSCharacterEncodingDocumentAttribute:@(NSUTF8StringEncoding)}
                                                     documentAttributes:nil
                                                                  error:nil];

我想更改发件人的字体颜色

3 个答案:

答案 0 :(得分:1)

此外,您可以按以下方式使用它。

NSString *dateString = [NSString stringWithFormat:@"%@%@", @"Teslimat: ", selectedReservationModel.DateLabel];
        NSMutableAttributedString *attrS = [[NSMutableAttributedString alloc] initWithString: dateString];
        [attrS addAttribute:NSFontAttributeName value:[GenericUtility getOpenSansBoldFontSize:12] range:NSMakeRange(0, 8)];
        [attrS addAttribute:NSFontAttributeName value:[GenericUtility getOpenSansRegularFontSize:12] range:NSMakeRange(9, selectedReservationModel.DateLabel.length)];
        lblDeliveryDate.attributedText = attrS;

答案 1 :(得分:0)

我相信完成任务的最简单方法是在文本中使用CSS内联,然后解析HTML也会改变颜色(我使用的是Swift语法,但我相信你可以很容易地将其转换为ObjC ):

let text = "<span class=\"drop_data_user\">Andrew James</span> liked your comment \"hiiiiiiiiiiiiiii\" that you posted."
let colouredAuthorText = "\(text)<style>.drop_data_user { color: #FEB600; }</style>"

然后只需解析colouredAuthorText(通过将样式附加到原始文本而创建)而不是原始文本,您应该好好去。

答案 2 :(得分:0)

NSMutableAttributedString *attrS = [[NSMutableAttributedString alloc] initWithString:@"My String"];
[attrS addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 2)];
[attrS addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(3, 6)];

self.myLabel.attributedText = attrS;

对于字体使用

[attrS addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:20] range:NSMakeRange(0, 3)];