关于UIlabel添加删除线

首先感谢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只显示一行的情况下,可以使用,多行就不能使用。但它的视觉效果要好点,删除线的位置也可以调整。
这个就看自己需求了,一般项目中画删除线也没多长.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,250评论 8 184
  • 这世界上从来不缺少优秀的人,之所以可以成为出类拔萃的那一个,大多都是懂得拿捏自己所擅长的事。
    一往直前阅读 1,638评论 0 0
  • 备忘录 ``` ```Paragon Camptune X for mac最新破解版这是一款超给力的*mac*磁...
    HiwinChiang阅读 1,495评论 0 0
  • 作者 聪聪那年 有人说,妳在看大话西游的时候,如果笑得腹背抽筋,龇牙咧嘴,那么妳很有幽默感。如果妳看完了大话西游,...
    聪聪那年阅读 3,369评论 0 3