在iOS开发中,常常会有某一区间一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求,
了解到NSMuttableAttstring(带属性的字符串),来实现这些需求.
使用方法:
为某一范围内文字设置多个属性
- (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
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 40)];
[self.view addSubview:label];
label.text = @"haha";
NSAttributedString *attrStr =
[[NSAttributedString alloc]initWithString:label.text
attributes:
@{NSFontAttributeName:[UIFont systemFontOfSize:20.f],
NSForegroundColorAttributeName:[UIColor cyanColor],
NSStrikethroughStyleAttributeName:@(NSUnderlineStyleSingle|NSUnderlinePatternSolid),
NSStrikethroughColorAttributeName:[UIColor blackColor]}];
label.attributedText = attrStr;
NSString *str = @"哈哈哈(假日)";
NSMutableAttributedString *attributeStr = [[NSMutableAttributedString alloc] initWithString:str];
[attributeStr setAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15],NSForegroundColorAttributeName:[UIColor colorWithRed:0.206 green:0.309 blue:1.000 alpha:1.000]} range:NSMakeRange(4, 2)];
cell.textLabel.attributedText = attributeStr;
哈哈哈(假日), 效果是这样的