UILabel文字添加删除线

作者: CoderAO | 来源:发表于2015-05-08 15:59 被阅读10163次
    NSAttributedString *attrStr = 
    [[NSAttributedStringalloc]initWithString:_model.originPrice                        
                                  attributes:
    @{NSFontAttributeName:[UIFont systemFontOfSize:20.f],       
      NSForegroundColorAttributeName:[UIColor colorWithHexString:@"#5bcec0"],     
      NSStrikethroughStyleAttributeName:@(NSUnderlineStyleSingle|NSUnderlinePatternSolid), 
      NSStrikethroughColorAttributeName:[UIColor colorWithHexString:@"#5bcec0"]}];
        
    self.orginPriceLabel.attributedText = attrStr;
    

    上面代码中给文字添加的四个特征分别是:文字大小,文字颜色,删除线样式为单实线,删除线的颜色

    效果:(上文实现的是途中右侧带删除线的蓝色部分文字效果)


    删除线效果.png
    20150721补充

    如果上面的方法有问题(虽然我没有遇到过问题),或者想换一种方式实现删除线,还可以采用以下方法:

    • 创建一个UILabel的子类
    • 在这个类内部实现drawRect方法将删除线绘制出来
    - (void)drawRect:(CGRect)rect
    {
        // 调用super的drawRect:方法,会按照父类绘制label的文字
        [super drawRect:rect];
    
        // 取文字的颜色作为删除线的颜色
        [self.textColor set];
        CGFloat w = rect.size.width;
        CGFloat h = rect.size.height;
        // 绘制(这个数字是为了找到label的中间位置,0.35这个数字是试出来的,如果不在中间可以自己调整)
        UIRectFill(CGRectMake(0, h * 0.35, w, 1));
    }
    
    • 需要使用删除线的部分用自定义的label初始化,按照正常label使用就好了.别忘了在给label赋值文字之后调用sizeToFit

    相关文章

      网友评论

      • AlexLi_:中文字符 和 数字 的删除线 不在一条平行线上~
        AlexLi_:@CancerJing 第一种方法
      • CoderAO:添加了增加删除线的另一种方法(自定义label)
      • 8ab8a4bc7c3e:嗯,我也在准备画一下,现在不知道什么原因,谢谢
      • CoderAO:@8ab8a4bc7c3e 抱歉昨天忘记回复了 这样的话应该不是代码问题,你多试几台设备试试,试之前先删除之前的版本。如果还不行考虑用其他加删除线的方法试试,比如用label的drawRect:方法画出来
      • 8ab8a4bc7c3e:模拟器所有机型都是正常的,今天真机iphone5和6都没有横线,4s和plus是正常的,之前测试真机都是正常的,我又在测试机安装之前版本,和今天情况一样,那块代码也没动,
      • CoderAO:@8ab8a4bc7c3e 没有你说的情况 另外你说现在iPhone5和6没有了,是真机还是模拟器,之前是有的吗?
      • 8ab8a4bc7c3e:有没有出现删除线时有时无的情况,之前一直好的,现在iPhone5和iPhone6上没有了

      本文标题:UILabel文字添加删除线

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