ios 开发关于NSMutableAttributedString的使用

来源:互联网 发布:政府应对网络舆情 编辑:程序博客网 时间:2024/04/19 03:27
iOS使用NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)
 在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;

 改变字符串
 Changing characters
 
 - replaceCharactersInRange:withString:
 取代/替换字符串的长度
 - deleteCharactersInRange:
删除字符串的长度

 

 改变分组
 Grouping changes
 
 - beginEditing
 开始编辑
 - endEditing
 结束编辑

 改变字符及其属性
 Changing characters and attributes
 
 - appendAttributedString:
 附加字符
 - insertAttributedString:atIndex:
 根据位置插入新的字符
 - replaceCharactersInRange:withAttributedString:
 根据字符所在的区间取代某一范围的字符
 - setAttributedString:
 设置字符






 2.     常见的属性及说明
 


 
 
 
 
 NSFontAttributeName
 字体
 NSParagraphStyleAttributeName
 段落格式
 NSForegroundColorAttributeName
 字体颜色
 NSBackgroundColorAttributeName
 背景颜色
 NSStrikethroughStyleAttributeName
 删除线格式
 NSUnderlineStyleAttributeName
 下划线格式
 NSStrokeColorAttributeName
 删除线颜色
 NSStrokeWidthAttributeName
 删除线宽度
 NSShadowAttributeName
 阴影
 更多方法和属性说明详见苹果官方说明文档:
 https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSMutableAttributedString_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40003689
 3.   使用实例
 
 UILabel *testLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 500)];
 
 testLabel.backgroundColor = [UIColor lightGrayColor];
 
 testLabel.textAlignment = NSTextAlignmentCenter;
 
 NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:@"我们是一个大家庭,我们是一个大团队"];
 
 [AttributedStr addAttribute:NSFontAttributeName
 
 value:[UIFont systemFontOfSize:18.0]
 
 range:NSMakeRange(2, 2)];
 
 [AttributedStr addAttribute:NSForegroundColorAttributeName
 
 value:[UIColor redColor]
 
 range:NSMakeRange(2, 2)];
 
 testLabel.attributedText = AttributedStr;
 
 [self.view addSubview:testLabel];
 
 

1 0
原创粉丝点击