美文网首页iOS开发技术分享
在ios10.3的系统下使用删除线失效

在ios10.3的系统下使用删除线失效

作者: NameCz | 来源:发表于2017-06-03 13:33 被阅读0次

    前几天使用ios 10.3跑自己的项目程序,结果发现使用富文本为label添加删除线全部失效,但是在10.3系统以下就一切正常,这应该是苹果系统的一个bug。

    根本原因:Label上的文字只要包含有“中文”,富文本字符串的中划线就会失效,我们可通过以下两种方式解决。

    第一种方式:人民币符号“¥”和“¥”,使用前面一个即可。

    NSString*market = [NSStringstringWithFormat:@"¥%@",@"500"];

    NSMutableAttributedString *attributeMarket = [[NSMutableAttributedString alloc] initWithString:market];

    [attributeMarket setAttributes:@{NSStrikethroughStyleAttributeName: [NSNumbernumberWithInteger:NSUnderlineStyleSingle]} range:NSMakeRange(0,market.length)];

    _marketLabel.attributedText= attributeMarket;

    第二种方式:让富文本支持“中文”

    增加一个富文本属性:

    NSBaselineOffsetAttributeName : @(NSUnderlineStyleSingle)

    NSString*market = [NSStringstringWithFormat:@"¥%@",@"500"];

    NSMutableAttributedString *attributeMarket = [[NSMutableAttributedString alloc] initWithString:market];

    [attributeMarket setAttributes:@{NSStrikethroughStyleAttributeName: [NSNumbernumberWithInteger:NSUnderlineStyleSingle], NSBaselineOffsetAttributeName : @(NSUnderlineStyleSingle)} range:NSMakeRange(0,market.length)];

    _marketLabel.attributedText= attributeMarket;

    我这边使用的是第二种方法,因为项目中人民币符号是由服务端传过来的,因此第二种方法适合我自己,其他可以按情况使用一种方法解决这个bug,苹果应该会在下个版本中修复这个bug。

    相关文章

      网友评论

        本文标题:在ios10.3的系统下使用删除线失效

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