Displaying NSMutableAttributedString on iOS 8

蓝咒 提交于 2019-11-30 11:48:59

Try this, first apply an extra NSBackgroundColorAttributeName in whole of the label with a transparent color

text = [[NSMutableAttributedString alloc] initWithString:@"Green is green. (-> Bug)"];
[text addAttribute:NSBackgroundColorAttributeName value:[UIColor clearColor] range:(NSRange){0,text.length}]; //Fix
[text addAttribute:NSBackgroundColorAttributeName value:[UIColor greenColor] range:(NSRange){9,5}];
cell.label.attributedText=text

I'm running into similar issues with NSAttributedString and the NSLinkAttributeName attribute in iOS 8. Specifically, a that starts at the beginning of the string (e.g. "www.cnn.com") displays as expected (using drawWithRect:options:context:). However, if we add the link beyond the first character (e.g "text www.cnn.com") the link does not show as blue or underlined, despite the attributes being correct. These strings usually do have attributes which encompass the entire string and that doesn't seem to matter, perhaps because the "whole string" attributes are added after the NSLink attributes. I've tried swapping the order so the links are added after other attributes, but that doesn't fix the issue.

The only workaround that I have figured out so far is to re-attribute the links with an underline, after adding the attributes that apply to the entire string, like this:

        [_attributedDisplayValue enumerateAttribute:NSLinkAttributeName
                                            inRange:displayValueRange
                                            options:0
                                         usingBlock:^(id value, NSRange range, BOOL *stop) {
                                             [_attributedDisplayValue addAttribute:NSUnderlineColorAttributeName
                                                                             value:[UIColor blueColor]
                                                                             range:range];
                                         }];

It's no longer an issue (iOS 9.0) - screenshot

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!