项目中需要显示文字的下划线,在iOS 7之前可以正常运行的代码在iOS 8上不能正常显示了,代码如下:
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]
initWithString:@"some string need to show with underline."];
[attributedString addAttribute:NSUnderlineStyleAttributeName
value:@(NSUnderlineStyleSingle)
range:NSMakeRange(10, 5)];
myLabel.attributedText = attributedString;
文档看了半天,也没找到答案。各种怀疑是不是label的size不对啊,颜色设置错啊。最终改成这样就可以正常显示了:
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]
initWithString:@"some string need to show with underline."];
[attributedString addAttribute:NSUnderlineStyleAttributeName
value:@(NSUnderlineStyleNone)
range:NSMakeRange(0, 10)];
[attributedString addAttribute:NSUnderlineStyleAttributeName
value:@(NSUnderlineStyleSingle)
range:NSMakeRange(10, 5)];
myLabel.attributedText = attributedString;
经过继续试验,我发现在iOS 8下:
- 如果我们要从字符串第一个字符开始显示下划线,直接从字符串开头设置 NSUnderlineStyleAttributeName 可以正确显示
- 如果我们是从字符串中间某个字符开始显示下划线,需要从字符串开头设置 NSUnderlineStyleAttributeName 为NSUnderlineStyleNone方可正确显示