iOS 8上NSMutableAttributedString显
今天在维护代码的过程中发现一个bug,页面需求是这样的,有一列文件的名字,前面有序号,而且文件名称带书名号,在文字和书名号下面加上下划线,序号不加;
最早写的代码是用tableView展示数据,先上代码(cellForRow里面):
NSString *str = @"12345678987654323456787654";
NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:str];
[title addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(3, [title length]-3)];
[cell.textLabel setAttributedText:title];
这里str代替数据源;
这样写的话,在iOS7,iOS9以及以上都可以正常运行,然而到iOS8上,当rang的location不为0时,下划线就显示不出来。iOS8的效果如图:
看文档也找不到解决办法,想到过可能是size或者颜色设置有问题,从而影响到了这个。但是经过调试,都不是。最后改成这样写就可以了:
NSString *str = @"12345678987654323456787654";
NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:str];
[title addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleNone] range:NSMakeRange(0, 3)];
[title addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(3, [title length]-3)];
[cell.textLabel setAttributedText:title];
修改后的效果: