NSMutableAttributedString实现富文本
2016-04-14 09:14
411 查看
先提出一个场景,一个UILabel上面有各种数字字符中文字符以及字母等,现在我们想将其中的数字找出来并且变为和其他字符不同的颜色。
这里提出一个解决方法,通过for循环来截取一个一个字符,判断其是不是0-9的数字,如果是就设置他的字体属性,我们使用了 NSMutableAttributedString实现富文本(带属性的字符串)。
NSAttributedString的使用方法,跟NSMutableString,NSString类似
1.使用方法:
为某一范围内文字设置多个属性
- (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;
2. 常见的属性及说明
NSFontAttributeName 字体
NSParagraphStyleAttributeName 段落格式
NSForegroundColorAttributeName 字体颜色
NSBackgroundColorAttributeName 背景颜色
NSStrikethroughStyleAttributeName删除线格式
NSUnderlineStyleAttributeName 下划线格式
NSStrokeColorAttributeName 删除线颜色
NSStrokeWidthAttributeName删除线宽度
NSShadowAttributeName 阴影
//PS:下划线属性的设置方法
//[attributeString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(i, 1)];
那么进入正题!,首先我们创建好UILabel,然后通过for循环来查找符合条件的数字
@property (nonatomic,strong)UILabel *myLabel;
self.myLabel =
[[UILabelalloc]initWithFrame:CGRectMake(0,0, 375,100)];
self.myLabel.backgroundColor =
[UIColorcyanColor];//天蓝色背景
self.myLabel.textAlignment =1;//居中
[self.viewaddSubview:self.myLabel];
//这是我们的测试用的文本字符串数据
NSString *content = @"abc123a1b2c3你懂得888";
NSArray *number = @[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9"];
NSMutableAttributedString *attributeString = [[NSMutableAttributedStringalloc]initWithString:content];
for (int i = 0; i < content.length;
i ++) {
//这里的小技巧,每次只截取一个字符的范围
NSString *a = [content substringWithRange:NSMakeRange(i, 1)];
//判断装有0-9的字符串的数字数组是否包含截取字符串出来的单个字符,从而筛选出符合要求的数字字符的范围NSMakeRange
if ([number containsObject:a]) {
[attributeString setAttributes:@{NSForegroundColorAttributeName:[UIColorblueColor],NSFontAttributeName:[UIFontsystemFontOfSize:25],NSUnderlineStyleAttributeName:[NSNumbernumberWithInteger:NSUnderlineStyleSingle]} range:NSMakeRange(i, 1)];
}
}
//完成查找数字,最后将带有字体下划线的字符串显示在UILabel上
self.myLabel.attributedText = attributeString;
这里提出一个解决方法,通过for循环来截取一个一个字符,判断其是不是0-9的数字,如果是就设置他的字体属性,我们使用了 NSMutableAttributedString实现富文本(带属性的字符串)。
NSAttributedString的使用方法,跟NSMutableString,NSString类似
1.使用方法:
为某一范围内文字设置多个属性
- (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;
2. 常见的属性及说明
NSFontAttributeName 字体
NSParagraphStyleAttributeName 段落格式
NSForegroundColorAttributeName 字体颜色
NSBackgroundColorAttributeName 背景颜色
NSStrikethroughStyleAttributeName删除线格式
NSUnderlineStyleAttributeName 下划线格式
NSStrokeColorAttributeName 删除线颜色
NSStrokeWidthAttributeName删除线宽度
NSShadowAttributeName 阴影
//PS:下划线属性的设置方法
//[attributeString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(i, 1)];
那么进入正题!,首先我们创建好UILabel,然后通过for循环来查找符合条件的数字
@property (nonatomic,strong)UILabel *myLabel;
self.myLabel =
[[UILabelalloc]initWithFrame:CGRectMake(0,0, 375,100)];
self.myLabel.backgroundColor =
[UIColorcyanColor];//天蓝色背景
self.myLabel.textAlignment =1;//居中
[self.viewaddSubview:self.myLabel];
//这是我们的测试用的文本字符串数据
NSString *content = @"abc123a1b2c3你懂得888";
NSArray *number = @[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9"];
NSMutableAttributedString *attributeString = [[NSMutableAttributedStringalloc]initWithString:content];
for (int i = 0; i < content.length;
i ++) {
//这里的小技巧,每次只截取一个字符的范围
NSString *a = [content substringWithRange:NSMakeRange(i, 1)];
//判断装有0-9的字符串的数字数组是否包含截取字符串出来的单个字符,从而筛选出符合要求的数字字符的范围NSMakeRange
if ([number containsObject:a]) {
[attributeString setAttributes:@{NSForegroundColorAttributeName:[UIColorblueColor],NSFontAttributeName:[UIFontsystemFontOfSize:25],NSUnderlineStyleAttributeName:[NSNumbernumberWithInteger:NSUnderlineStyleSingle]} range:NSMakeRange(i, 1)];
}
}
//完成查找数字,最后将带有字体下划线的字符串显示在UILabel上
self.myLabel.attributedText = attributeString;
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- iOS推送的那些事
- IOS 改变键盘颜色代码