UILabel文字添加删除线

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

你可能感兴趣的:(UILabel文字添加删除线)