动图显示:(链接跳转浏览器,拨打电话,应有尽有)
大家感觉好的话可以关注一波,github上点波star 后续封装UIButton
在发到这篇文章中来。
当我们要显示不同颜色字体,下划线,删除线等等一些特殊属性时,我们就必须要利用富文本(NSMutableAttributedString)来实现。
废话不多说,今天我主要说说UIlabel富文本的使用,(其它显示字符串控件使用方法类似)自己可以以此类推。
首先,我们看看NSMutableAttributedString的使用方法
1.实例化方法:使用字符串初始化
实现效果如下图(我这个是写在cell中的)
在此就只写删除线的事例,其它类似
关于字体大小,颜色,下划线等等,如下:
2.富文本常见的属性及说明
添加删除线:NSMutableAttributedString * discount = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"¥%@",discountStr] attributes:
@{NSFontAttributeName : [UIFont jk_systemFontOfPxSize:30],
NSForegroundColorAttributeName : JKSameRGBColor(153),
NSStrikethroughStyleAttributeName:@(NSUnderlineStyleDouble),
NSStrikethroughColorAttributeName : [UIColor yellowColor]
其中:NSStrikethroughStyleAttributeName 删除线
实际上,设置删除线 NSStrikethroughColorAttributeName 的时候,值也是这个枚举。
// NSUnderlineStyleNone 不设置下划线/删除线
// NSUnderlineStyleSingle 设置下划线/删除线为细的单线
// NSUnderlineStyleThick 设置下划线/删除线为粗的单线
// NSUnderlineStyleDouble 设置下划线/删除线为细的双线
// NSUnderlinePatternSolid 设置下划线/删除线样式为连续的实线
//NSUnderlinePatternDot 设置下划线/删除线样式为点,也就是虚线,比如这样:------
// NSUnderlinePatterDash 设置下划线/删除线样式为破折号,比如这样:—— —— ——
// NSUnderlinePatternDashDot 设置下划线/删除线样式为连续的破折号和点,比如这样:——-——-——-
// NSUnderlinePatternDashDotDot 设置下划线/删除线样式为连续的破折号、点、点,比如:——--——--——--
// NSUnderlineByWord 在有空格的地方不设置下划线/删除线
当 : ¥ 和 100 组合 时 ,删除线出现断层,不水平现象
当我用$符号时,发现没问题,所以我猜测是 中英文 结合问题
上面的是 直接 快捷键shift + 4 打得 符号,有断层
下面是 用 搜狗 打“RMB”选的符号,没有断层
在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求。之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦,而且很多UILabel的属性也不起作用了,效果都不理想。后来了解到NSMuttableAttstring(带属性的字符串),上面的一些需求都可以很简便的实现。
-(id)initWithString:(NSString *)str attributes:(NSDictionary *)attrs
字典中存放一些属性名和属性值,如:
NSDictionary *attributeDict = [NSDictionarydictionaryWithObjectsAndKeys:
[UIFontsystemFontOfSize:15.0],NSFontAttributeName,
[UIColorredColor],NSForegroundColorAttributeName,
NSUnderlineStyleAttributeName,NSUnderlineStyleSingle,nil]
NSMutableAttributedString *AttributedStr = [[NSMutableAttributedStringalloc]initWithString:@"今天天气不错呀" attributes:attributeDict]
-(id)initWithAttributedString:(NSAttributedString *)attester
使用NSAttributedString初始化,跟NSMutableString,NSString类似
使用方法:
为某一范围内文字设置多个属性
-(void)setAttributes:(NSDictionary *)attrs range:(NSRange)range
为某一范围内文字添加某个属性
-(void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range
为某一范围内文字添加多个属性
-(void)addAttributes:(NSDictionary *)attrs range:(NSRange)range
移除某范围内的某个属性
-(void)removeAttribute:(NSString *)name range:(NSRange)range
运行效果:
另外,其他可以设置text 的控件(如UIButton,UITextField)也都有该属性,该文章不够详细,只是简单介绍,其他效果的实现参考API中更多的属性及使用方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)