iOS 8上NSMutableAttributedString显

2017-06-28  本文已影响100人  慧业

      今天在维护代码的过程中发现一个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];

修改后的效果:

上一篇下一篇

猜你喜欢

热点阅读