iOS开发 UIlabel完美封装 富文本的使用

iOS开发 UIlabel完美封装 富文本的使用,第1张

这两天闲着没事封装了下UILabel,适用于绝大多数用户需求,UIlabel 辨别用户名 ,话题 ,链接,电话,高亮文字等,链接跳转网页,电话点击拨打电话

动图显示:(链接跳转浏览器,拨打电话,应有尽有)

大家感觉好的话可以关注一波,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中更多的属性及使用方法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11959052.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存