在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求。之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦,而且很多UILabel的属性也不起作用了,效果都不理想。后来了解到NSMuttableAttstring(带属性的字符串),上面的一些需求都可以很简便的实现。
1. 实例化方法和使用方法
实例化方法:
使用字符串初始化
- (id)initWithString:(NSString *)str;
例:
NSMutableAttributedString *AttributedStr = [[NSMutableAttributedStringalloc]initWithString:@"今天天气不错呀"];
- (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;
2. 常见的属性及说明
NSFontAttributeName 字体
NSParagraphStyleAttributeName 段落格式
NSForegroundColorAttributeName 字体颜色
NSBackgroundColorAttributeName 背景颜色
NSStrikethroughStyleAttributeName删除线格式
NSUnderlineStyleAttributeName 下划线格式
NSStrokeColorAttributeName 删除线颜色
NSStrokeWidthAttributeName删除线宽度
NSShadowAttributeName 阴影
更多方法和属性说明详见苹果官方说明文档:
3. 使用实例
<p style="line-height:normal; margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px; font-size:14px"><span style="font-family:Courier New;"><span class="pln" style="color:#000000;line-height:24.5px;"> </span><span style="color:#703daa;line-height:24.5px;"><span class="typ" style="color:#66066;">UILabel</span></span><span class="pln" style="color:#000000;line-height:24.5px;"> </span><span class="pun" style="color:#66660;line-height:24.5px;">*</span><span class="pln" style="color:#000000;line-height:24.5px;">testLabel </span><span class="pun" style="color:#66660;line-height:24.5px;">=</span><span class="pln" style="color:#000000;line-height:24.5px;"> </span><span class="pun" style="color:#66660;line-height:24.5px;">[[</span><span style="color:#703daa;line-height:24.5px;"><span class="typ" style="color:#66066;">UILabel</span></span><span class="pln" style="color:#000000;line-height:24.5px;"> </span><span style="color:#3d1d81;line-height:24.5px;"><span class="pln" style="color:#000000;">alloc</span></span><span class="pun" style="color:#66660;line-height:24.5px;">]</span><span style="color:#3d1d81;line-height:24.5px;"><span class="pln" style="color:#000000;">initWithFrame</span></span><span class="pun" style="color:#66660;line-height:24.5px;">:</span><span style="color:#3d1d81;line-height:24.5px;"><span class="typ" style="color:#66066;">CGRectMake</span></span><span class="pun" style="color:#66660;line-height:24.5px;">(</span><span style="color:#272ad8;line-height:24.5px;"><span class="lit" style="color:#06666;">0</span></span><span class="pun" style="color:#66660;line-height:24.5px;">,</span><span class="pln" style="color:#000000;line-height:24.5px;"> </span><span style="color:#272ad8;line-height:24.5px;"><span class="lit" style="color:#06666;">100</span></span><span class="pun" style="color:#66660;line-height:24.5px;">,</span><span class="pln" style="color:#000000;line-height:24.5px;"> </span><span style="color:#272ad8;line-height:24.5px;"><span class="lit" style="color:#06666;">320</span></span><span class="pun" style="color:#66660;line-height:24.5px;">,</span><span class="pln" style="color:#000000;line-height:24.5px;"> </span><span style="color:#272ad8;line-height:24.5px;"><span class="lit" style="color:#06666;">30</span></span><span class="pun" style="color:#66660;line-height:24.5px;">)];</span></span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span style="font-family:Courier New;"><span style="font-size:14px;line-height:24.5px;"><span class="pln" style="color:#000000;"> testLabel</span><span class="pun" style="color:#66660;">.</span></span><span style="font-size:14px;color:#703daa;line-height:normal;"><span class="pln" style="color:#000000;line-height:24.5px;">backgroundColor</span></span><span style="font-size:14px;line-height:24.5px;"><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">=</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">[</span></span><span style="font-size:14px;color:#703daa;line-height:normal;"><span class="typ" style="color:#66066;line-height:24.5px;">UIColor</span></span><span style="font-size:14px;line-height:24.5px;"><span class="pln" style="color:#000000;"> </span></span><span style="font-size:14px;color:#3d1d81;line-height:24.5px;"><span class="pln" style="color:#000000;">lightGrayColor</span></span><span style="font-size:14px;line-height:24.5px;"><span class="pun" style="color:#66660;">];</span></span></span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span style="font-family:Courier New;"><span style="font-size:14px;line-height:24.5px;"><span class="pln" style="color:#000000;"> testLabel</span><span class="pun" style="color:#66660;">.</span></span><span style="font-size:14px;color:#703daa;line-height:24.5px;"><span class="pln" style="color:#000000;">textAlignment</span></span><span style="font-size:14px;line-height:24.5px;"><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">=</span><span class="pln" style="color:#000000;"> </span></span><span style="font-size:14px;color:#3d1d81;line-height:normal;"><span class="typ" style="color:#66066;line-height:24.5px;">NSTextAlignmentCenter</span></span><span style="font-size:14px;line-height:24.5px;"><span class="pun" style="color:#66660;">;</span></span></span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span style="font-family:Courier New;"><span style="font-size:14px;line-height:24.5px;"><span class="pln" style="color:#000000;"> </span></span><span style="font-size:14px;color:#703daa;line-height:normal;"><span class="typ" style="color:#66066;line-height:24.5px;">NSMutableAttributedString</span></span><span style="font-size:14px;line-height:24.5px;"><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">*</span><span class="typ" style="color:#66066;">AttributedStr</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">=</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">[[</span></span><span style="font-size:14px;color:#703daa;line-height:normal;"><span class="typ" style="color:#66066;line-height:24.5px;">NSMutableAttributedString</span></span><span style="font-size:14px;line-height:24.5px;"><span class="pln" style="color:#000000;"> </span></span><span style="font-size:14px;color:#3d1d81;line-height:24.5px;"><span class="pln" style="color:#000000;">alloc</span></span><span style="font-size:14px;line-height:24.5px;"><span class="pun" style="color:#66660;">]</span></span><span style="font-size:14px;color:#3d1d81;line-height:24.5px;"><span class="pln" style="color:#000000;">initWithString</span></span><span style="font-size:14px;line-height:24.5px;"><span class="pun" style="color:#66660;">:</span></span><span style="font-size:14px;color:#d12f1b;line-height:24.5px;"><span class="pun" style="color:#66660;">@</span><span class="str" style="color:#0880;">"</span></span><span style="font-size:14px;color:#d12f1b;line-height:normal;"><span class="str" style="color:#0880;line-height:24.5px;">今天天气不错呀</span></span><span style="font-size:14px;color:#d12f1b;line-height:24.5px;"><span class="str" style="color:#0880;">"</span></span><span style="font-size:14px;line-height:24.5px;"><span class="pun" style="color:#66660;">];</span></span></span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span style="font-family:Courier New;"><span style="font-size:14px;line-height:normal;"><span class="pln" style="color:#000000;line-height:24.5px;"> </span><span class="pun" style="color:#66660;line-height:24.5px;">[</span><span class="typ" style="color:#66066;line-height:24.5px;">AttributedStr</span><span class="pln" style="color:#000000;line-height:24.5px;"> </span></span><span style="font-size:14px;color:#3d1d81;line-height:24.5px;"><span class="pln" style="color:#000000;">addAttribute</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">:</span></span><span style="font-size:14px;color:#703daa;line-height:24.5px;"><span class="typ" style="color:#66066;">NSFontAttributeName</span></span></span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span style="font-family:Courier New;"><span style="font-size:14px;line-height:normal;"><span class="pln" style="color:#000000;line-height:24.5px;"> </span></span><span style="font-size:14px;color:#3d1d81;line-height:24.5px;"><span class="pln" style="color:#000000;">value</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">:[</span></span><span style="font-size:14px;color:#703daa;line-height:24.5px;"><span class="typ" style="color:#66066;">UIFont</span></span><span style="font-size:14px;line-height:normal;"><span class="pln" style="color:#000000;line-height:24.5px;"> </span></span><span style="font-size:14px;color:#3d1d81;line-height:24.5px;"><span class="pln" style="color:#000000;">systemFontOfSize</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">:</span></span><span style="font-size:14px;color:#272ad8;line-height:24.5px;"><span class="lit" style="color:#06666;">16.0</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">]</span></span></span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span style="font-family:Courier New;"><span style="font-size:14px;line-height:normal;"><span class="pln" style="color:#000000;line-height:24.5px;"> </span></span><span style="font-size:14px;color:#3d1d81;line-height:24.5px;"><span class="pln" style="color:#000000;">range</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">:</span></span><span style="font-size:14px;color:#3d1d81;line-height:24.5px;"><span class="typ" style="color:#66066;">NSMakeRange</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">(</span></span><span style="font-size:14px;color:#272ad8;line-height:24.5px;"><span class="lit" style="color:#06666;">2</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">,</span><span class="pln" style="color:#000000;line-height:24.5px;"> </span></span><span style="font-size:14px;color:#272ad8;line-height:24.5px;"><span class="lit" style="color:#06666;">2</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">)];</span></span></span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span style="font-family:Courier New;"><span style="font-size:14px;line-height:24.5px;"><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">[</span><span class="typ" style="color:#66066;">AttributedStr</span><span class="pln" style="color:#000000;"> </span></span><span style="font-size:14px;color:#3d1d81;line-height:24.5px;"><span class="pln" style="color:#000000;">addAttribute</span></span><span style="font-size:14px;line-height:24.5px;"><span class="pun" style="color:#66660;">:</span></span><span style="font-size:14px;color:#703daa;line-height:normal;"><span class="typ" style="color:#66066;line-height:24.5px;">NSForegroundColorAttributeName</span></span></span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span style="font-family:Courier New;"><span style="font-size:14px;line-height:normal;"><span class="pln" style="color:#000000;line-height:24.5px;"> </span></span><span style="font-size:14px;color:#3d1d81;line-height:24.5px;"><span class="pln" style="color:#000000;">value</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">:[</span></span><span style="font-size:14px;color:#703daa;line-height:24.5px;"><span class="typ" style="color:#66066;">UIColor</span></span><span style="font-size:14px;line-height:normal;"><span class="pln" style="color:#000000;line-height:24.5px;"> </span></span><span style="font-size:14px;color:#3d1d81;line-height:24.5px;"><span class="pln" style="color:#000000;">redColor</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">]</span></span></span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span style="font-family:Courier New;"><span style="font-size:14px;line-height:normal;"><span class="pln" style="color:#000000;line-height:24.5px;"> </span></span><span style="font-size:14px;color:#3d1d81;line-height:24.5px;"><span class="pln" style="color:#000000;">range</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">:</span></span><span style="font-size:14px;color:#3d1d81;line-height:24.5px;"><span class="typ" style="color:#66066;">NSMakeRange</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">(</span></span><span style="font-size:14px;color:#272ad8;line-height:24.5px;"><span class="lit" style="color:#06666;">2</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">,</span><span class="pln" style="color:#000000;line-height:24.5px;"> </span></span><span style="font-size:14px;color:#272ad8;line-height:24.5px;"><span class="lit" style="color:#06666;">2</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">)];</span></span></span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span style="font-family:Courier New;"><span style="font-size:14px;line-height:normal;"><span class="pln" style="color:#000000;line-height:24.5px;"> testLabel</span><span class="pun" style="color:#66660;line-height:24.5px;">.</span></span><span style="font-size:14px;color:#703daa;line-height:24.5px;"><span class="pln" style="color:#000000;">attributedText</span></span><span style="font-size:14px;line-height:normal;"><span class="pln" style="color:#000000;line-height:24.5px;"> </span><span class="pun" style="color:#66660;line-height:24.5px;">=</span><span class="pln" style="color:#000000;line-height:24.5px;"> </span><span class="typ" style="color:#66066;line-height:24.5px;">AttributedStr</span><span class="pun" style="color:#66660;line-height:24.5px;">;</span></span></span></p><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span style="font-family:Courier New;"><span style="font-size:14px;line-height:normal;"><span class="pln" style="color:#000000;line-height:24.5px;"> </span><span class="pun" style="color:#66660;line-height:24.5px;">[</span></span><span style="font-size:14px;color:#bb2ca2;line-height:24.5px;"><span class="kwd" style="color:#0088;">self</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">.</span></span><span style="font-size:14px;color:#703daa;line-height:24.5px;"><span class="pln" style="color:#000000;">view</span></span><span style="font-size:14px;line-height:normal;"><span class="pln" style="color:#000000;line-height:24.5px;"> </span></span><span style="font-size:14px;color:#3d1d81;line-height:24.5px;"><span class="pln" style="color:#000000;">addSubview</span></span><span style="font-size:14px;line-height:normal;"><span class="pun" style="color:#66660;line-height:24.5px;">:</span><span class="pln" style="color:#000000;line-height:24.5px;">testLabel</span><span class="pun" style="color:#66660;line-height:24.5px;">];</span></span></span></p>
运行效果:
另外,其他可以设置text 的控件(如UIButton,UITextField)也都有该属性,该文章不够详细,只是简单介绍,其他效果的实现参考API中更多的属性及使用方法。
转载自:http://snowyshell.blog.163.com/blog/static/2209140342014475383375/