首先感谢CoderAO分享的关于label删除线的方法,但是我在测试中发现,iOS10.3 NSStrikethroughStyleAttributeName 不起作用
经过测试发现含有中文字符不会显示删除线.
解决方法:
就是在后面增加一个富文本属性: NSBaselineOffsetAttributeName : @(NSUnderlineStyleSingle)
对于在label类的category中添加方法
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
// 取文字的颜色作为删除线的颜色
[self.textColor set];
CGFloat w = rect.size.width;
//再iOS10.3和iOS10.3之前拿到的rect不一致,会导致删除线的位置有些差距,这里可以添加判断系统版本的语句进行处理。也可以直接将高度写死。
CGFloat h = rect.size.height * 0.5;
UIRectFill(CGRectMake(0, h, w, 1));
}
这两种方法进行对比:
1.以像iOS10.3以前那样使用,不管一行还是多行都会加删除线的。但是看上去没有方法二的视觉效果好。
2.label只显示一行的情况下,可以使用,多行就不能使用。但它的视觉效果要好点,删除线的位置也可以调整。
这个就看自己需求了,一般项目中画删除线也没多长.
网友评论