美文网首页
iOS 8上NSMutableAttributedString显

iOS 8上NSMutableAttributedString显

作者: 慧业 | 来源:发表于2017-06-28 17:49 被阅读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];

    修改后的效果:

    相关文章

      网友评论

          本文标题:iOS 8上NSMutableAttributedString显

          本文链接:https://www.haomeiwen.com/subject/jhwucxtx.html