iOS中的富文本(NSMuttableAttstring)

前段时间在做一个需求,大致是在一个Lable中显示几种不同字体和字号的文字,起初我的想法是使用UILabel的textLayer来进行重绘,但是操作起来太麻烦。所以放弃了这个方案,之后又咨询了一位好朋友,他给我的建议就是使用富文本,经过了一番研究决定将学习到东西记录下来分享给大家。

NSMuttableAttstring

NSMuttableAttstring在NSAttributedString的基础之上添加了2个主要方法,一个是替换指定范围字符的方法(下面成为方法一),另一个是设定指定范围字符样式的方法(下面成为方法二)。

方法一(替换指定范围字符)
//1.实例化NSMutableAttributedString
NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:@"天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤。"];
//2.调用replaceCharactersInRange方法
//第一个参数确定替换位置
//第二个参数确定替换的文字
[AttributedStr replaceCharactersInRange:NSMakeRange(0, 5) withString:@"大牛弟弟"];
//3.给lable赋值,目的是为了显示
lable2.attributedText = AttributedStr;```

#####方法二(设定指定范围字符样式)

NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:@"天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤。"];

[AttributedStr setAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Arial-BoldMT" size:20]} range:NSMakeRange(0, 5)];

lable2.attributedText = AttributedStr;


![显示效果](http://upload-images.jianshu.io/upload_images/3022339-f91101accba9b91a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

是不是很简单?其实使用方法并不是难点,关键在于是否知道能使用的样式都有哪些,下面在介绍一些常见样式。
1. ```NSFontAttributeName :[UIFont fontWithName:@"Arial-BoldMT" size:20]```设置字体和字体大小
2. ```NSBackgroundColorAttributeName:[UIColor redColor]```设置容器的背景颜色
3. ```NSForegroundColorAttributeName:[UIColor blueColor]```设置文字的颜色
4. ```NSUnderlineStyleAttributeName:[NSNumber numberWithInteger:1]```设置文字下划线,接受NSNumber类型,0为无下划线,1为有下划线
5. ```NSUnderlineColorAttributeName:[UIColor greenColor]```设置下换线颜色
6. ```NSLinkAttributeName:[NSURL URLWithString:@"www.baidu.com"]```设定文字的超链接,如果需要跳转,只能使用UITextView配合代理实现,UILable经过测试无法实现这样的功能。

NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:@"天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤。"];

[AttributedStr setAttributes:@{
NSFontAttributeName:[UIFont fontWithName:@"Arial-BoldMT" size:20],
NSBackgroundColorAttributeName:[UIColor redColor],
NSForegroundColorAttributeName:[UIColor blueColor],
NSUnderlineStyleAttributeName:[NSNumber numberWithInteger:1],
NSUnderlineColorAttributeName:[UIColor greenColor],
NSLinkAttributeName:[NSURL URLWithString:@"www.baidu.com"]
} range:NSMakeRange(0, 5)];

lable2.attributedText = AttributedStr;


![实现效果](http://upload-images.jianshu.io/upload_images/3022339-c8428abe9cedb10a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

关于文字样式,还有很多有意思的样式这里不多介绍,剩下的就等待有兴趣的同学自己发掘啦

你可能感兴趣的:(iOS中的富文本(NSMuttableAttstring))