iOS 给字符串添加删除线,下划线效果遇到的坑(10.3 与 8.1 系统)
来源:互联网 发布:linux 驱动 usleep 编辑:程序博客网 时间:2024/06/05 11:27
原文地址:http://www.jianshu.com/p/f85165b8fc49
本来以为挺简单的效果,没想到居然有点小坑,写下来跟大家分享下
给字符串添加删除线效果
1. 给字符串"123456"添加删除线效果
设置@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle)}
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"123456" attributes:@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle)}];label.attributedText = attrStr;
在iOS 8.1,9.0,10.3系统的模拟器,呈现出一样的效果,如下:
2. 只给字符串某一部分添加删除线
如:字符串"123456",只给“456”添加删除线
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"123456"];[attrStr setAttributes:@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle)} range:NSMakeRange(3, 3)];label.attributedText = attrStr;
继续使用上面的方法得到效果如下:
在iOS 8.1,10.3系统的模拟器效果(NSStrikethroughStyleAttributeName在iOS 10.3、8.1不管用):
在iOS 9.0系统的模拟器效果:
问题出现了,如何在8.0和10.0的系统里面使方法生效?
不懂就要查喽,经过搜索以后,找到了最简单方便的解决办法:
在iOS 8 需要额外给其他字符串设置
@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleNone)}
,才能正常显示
在iOS 10 需要额外给其他字符串设置@{NSBaselineOffsetAttributeName : @0}
,才能正常显示
- 注:@(NSUnderlineStyleNone) 和 @0均是默认值
两者综合一下,
代码:
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"123456" attributes:@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleNone)}];[attrStr setAttributes:@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle), NSBaselineOffsetAttributeName : @0} range:NSMakeRange(3, 3)];label.attributedText = attrStr;
效果:
在 iOS 8.1、9.0 和 iOS 10.3均能正常显示,使用其他方法也可以,但是要保证上面的属性设置上
给字符串添加下划线效果
1. 给字符串"123456"添加下划线效果
设置@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)}
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"123456" attributes:@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)}];label.attributedText = attrStr;
在iOS 8.1,9.0,10.3系统的模拟器,正常显示:
2. 只给字符串某一部分添加下划线效果
如:字符串"123456",只给“456”添加下划线
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"123456"];[attrStr setAttributes:@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)} range:NSMakeRange(3, 3)];label.attributedText = attrStr;
在iOS 9.0、 iOS 10.3显示如下:
在iOS 8.1显示如下(NSUnderlineStyleAttributeName在iOS 8.1不管用):
如何在iOS 8的系统里面使添加下划线方法生效?
在iOS 8 需要额外给其他字符串设置@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleNone)},才能正常显示
代码:
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"123456" attributes:@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleNone)}];[attrStr setAttributes:@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)} range:NSMakeRange(3, 3)];label.attributedText = attrStr;
效果:
总结:
- 给整个字符串添加效果
- 删除线:设置
@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle)}
- 下划线:设置
@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)}
- 删除线:设置
- 给部分字符添加效果
- 删除线:
给全部字符串设置@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleNone)}
添加删除线的字符串设置@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle), NSBaselineOffsetAttributeName : @0}
- 下划线:
给全部字符串设置@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleNone)}
添加下划线的字符串设置@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)
- 删除线:
参考链接
stackoverflow
作者:這Er
链接:http://www.jianshu.com/p/f85165b8fc49
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- iOS 给字符串添加删除线,下划线效果遇到的坑(10.3 与 8.1 系统)
- IOS 给Label添加下划线,删除线,不同的颜色和大小
- iOS给label添加下划线
- iOS 给UILabel添加下划线
- Android 给 TextView 设置删除线,下划线,加粗等效果
- iOS给lable或button添加下划线
- TextView的一些小功能,删除线/下划线 效果
- iOS删除线和下划线
- iOS开发---给数字添加删除线
- iOS 给文字添加删除线
- Android的TextView中文字添加删除线,下划线
- 给TextView的文字添加下划线
- 给TextView的文字添加下划线
- java AWT 给 Font 添加删除线和下划线(2D绘图)
- 给文本设置下划线或者删除线
- Android 对TextView添加删除线,下划线,加粗,斜体等效果
- Android 对TextView添加删除线,下划线,加粗,斜体等效果
- 给textview 添加下划线
- Uncaught TypeError: Cannot read property 'getItem' of null
- Picasso的简单使用
- 腾讯arttemplate模板官方介绍
- 导入项目工程后如果出现下面的错误该如何解决
- 快速排序
- iOS 给字符串添加删除线,下划线效果遇到的坑(10.3 与 8.1 系统)
- Pl/sql 中文乱码出现????
- RabbitMQ的几种典型使用场景
- 线程的两种实现方式,以及区别
- JMter通过JDBC请求进行数据库压力测试
- 网易2017招聘笔试题<下厨房>Java代码
- Post/get 提交调用抓取Url获取json字符串
- 网络唤醒全攻略(Wake On Lan)
- Java排序算法之归并排序