iOS 8上NSMutableAttributedString显示下划线的一个坑


http://chun.tips/blog/2014/12/04/ios-8shang-nsmutableattributedstringxian-shi-xia-hua-xian-de-%5B%3F%5D-ge-keng/


项目中需要显示文字的下划线,在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方可正确显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值