zoukankan      html  css  js  c++  java
  • iOS10.3系统以后(NSStrikethroughStyleAttributeName)富文本删除线失效不显示的坑

    填补iOS10.3系统以后(NSStrikethroughStyleAttributeName)富文本删除线失效不显示的坑

    最近在项目里遇见个问题,就是设置富文本删除线不起作用的问题,纠结了很长时间

    原来我实现富文本删除线是这样写的,就是实现在价格文字中间画一条线:

            _subPrice_Label.text = [NSString stringWithFormat:@"¥%.2f",programModel.salesPrice];
            NSMutableAttributedString *salesPriceAttributed = [[NSMutableAttributedString alloc]initWithString:_subPrice_Label.text];
            [salesPriceAttributed addAttribute:NSStrikethroughStyleAttributeName value:@(NSUnderlinePatternSolid | NSUnderlineStyleSingle) range:NSMakeRange(0, _subPrice_Label.text.length)];
            [salesPriceAttributed addAttribute:NSStrokeColorAttributeName value:[UIColor darkGrayColor] range:NSMakeRange(0, _subPrice_Label.text.length)];
             _subPrice_Label.attributedText = salesPriceAttributed;
    

    但上面的方法怎么都不行,不管是整行文字还是文字中的某个片段都不起作用,但是测试其他的富文本样式都还OK,这个在iOS10.3以前都是可以的

    原来这是iOS10.3系统的一个bug,是个bug,就是个坑人的系统bug

    iOS 10.3上显示异常,需要在添加一个NSBaselineOffsetAttributeName属性才可以。如下:

        NSMutableAttributedString *priceAttributed = [[NSMutableAttributedString alloc]initWithString:label.text];
        NSRange range = [label.text rangeOfString:label.text];
        [priceAttributed addAttribute:NSStrikethroughStyleAttributeName value:@(NSUnderlineStyleSingle | NSUnderlinePatternSolid) range:range]; 
        [priceAttributed addAttribute:NSStrikethroughColorAttributeName value:[UIColor redColor] range:range];
        [priceAttributed addAttribute:NSBaselineOffsetAttributeName value:@(NSUnderlineStyleSingle) range:range];
        label.attributedText = priceAttributed;
    

     我在设置富文本删除线的时候添加了NSBaselineOffsetAttributeName属性:

    [priceAttributed addAttribute:NSBaselineOffsetAttributeName value:@(NSUnderlineStyleSingle) range:range];
    

     这样这个坑就被填上了!

    献给掉此坑的们,

  • 相关阅读:
    windows下操作linux虚拟机映射网络驱动器中文件提示chmod权限不足解决方案
    Centos 更改MySQL5.7数据库目录位置
    MySQL语句增加字段,修改字段名,修改类型,修改默认值
    [MySQL]MySQL数据库中如何查询分组后每组中的最后一条记录?
    ROW_NUMBER()函数使用详解
    【转】mysql 存储过程的示例
    简简单单储存过程——循环一个select结果集
    mysql存储过程demo
    mysql日期加一个天数获得新的日期
    使用SyncNavigator轻松实现数据库异地同步、断点续传、异构同步
  • 原文地址:https://www.cnblogs.com/Rong-Shengcom/p/7410562.html
Copyright © 2011-2022 走看看