iOS - lable的text中不同字符不同颜色设置,一段文字显示多重颜色
2017-01-17 14:21 菜鸟Alex 阅读(1153) 评论(0) 编辑 收藏 举报代码如下
NSMutableAttributedString *hintString=[[NSMutableAttributedString alloc]initWithString:@"(故障)"];
NSRange range1=[[hintString string]rangeOfString:@"()"];
[hintString addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:range1];
NSRange range2=[[hintString string]rangeOfString:@"故障"];
[hintString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:range2];
//下面是需要给哪个lable进行赋值
self.lblDpfStatus.attributedText = hintString;
封装成工具类
#import <UIKit/UIKit.h>
@interface NSObject (Tool)
-(NSAttributedString *)setString:(NSString *)str withColorOneStr:(NSString *)oneStr andColorOne:(UIColor *)colorOne andColorTwoStr:(NSString *)twoStr andColorTwo:(UIColor *)colorTwo;
@end
//.m文件中
#import "NSObject+Tool.h"
@implementation NSObject (Tool)
-(NSAttributedString *)setString:(NSString *)str withColorOneStr:(NSString *)oneStr andColorOne:(UIColor *)colorOne andColorTwoStr:(NSString *)twoStr andColorTwo:(UIColor *)colorTwo{
NSMutableAttributedString *hintString=[[NSMutableAttributedString alloc]initWithString:str];
NSRange range1=[[hintString string]rangeOfString:oneStr];
[hintString addAttribute:NSForegroundColorAttributeName value:colorOne range:range1];
NSRange range2=[[hintString string]rangeOfString:twoStr];
[hintString addAttribute:NSForegroundColorAttributeName value:colorTwo range:range2];
return hintString;
}
@end
测试工具类
- (void)viewDidLoad {
[super viewDidLoad];
UILabel * lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, 100, 35)];
lbl.text = @"hello world";
lbl.attributedText = [self setString:lbl.text withColorOneStr:@"hello" andColorOne:[UIColor orangeColor] andColorTwoStr:@"w" andColorTwo:[UIColor redColor]];
[self.view addSubview:lbl];
}
测试结果如下
设置的字符串必须是连续的否则无效如图