UILabel 中的文字有时会有:不同的字体大小、不同的颜色,现在一个方法即可解决这一问题,
具体使用方式,如下案例:
//创建label
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100,380,200,60)];
label.backgroundColor = [UIColor yellowColor];
label.font = [UIFont systemFontOfSize:16];
label.text =@"Hello, girl, Boy, money";
label.textColor = [UIColor redColor];
label.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:label];
NSArray *colorArray =@[[UIColor greenColor],[UIColor blueColor],[UIColor grayColor]];
//方法调用
[self changeTextLab:label
stringArray:@[@"Hello",@"Boy",@"money"]
colorArray:colorArray
fontArray:@[@"18",@"22"]];
案例效果图如下:
以下是具体方法:
#pragma mark 改变label的文本的两种以上颜色及字体
/**
iOS改变UILabel的多种颜色和字体大小
@param strArray 需要改变的字符串 数组
@param colorArray 需要改变的颜色 数组
@param fontArray 需要改变的字体 数组
注意:需要改变的字符串(颜色、字体)按数组顺序排列
字符串1 颜色1 字体1、
字符串2 颜色2 字体2...
一一对应,具体效果,由测试案例便可知晓
*/
+ (void)changeTextLab:(UILabel *)myLabel
stringArray:(NSArray *)strArray
colorArray:(NSArray *)colorArray
fontArray:(NSArray *)fontArray {
NSMutableAttributedString *mutAttStr = [[NSMutableAttributedString alloc] initWithString:myLabel.text];
NSString* _str =nil;
UIFont* _font =nil;
NSRange _range =NSMakeRange(0,0);
for (int i=0; i
//NSLog(@"---> strArray.count = %ld",strArray.count);
_str = strArray[i];
NSUInteger location = [[mutAttStr string] rangeOfString:_str].location;
NSUInteger length = [[mutAttStr string] rangeOfString:_str].length;
_range = NSMakeRange(location, length);
// 改变颜色
if (colorArray.count >= (i+1)) {
[mutAttStr addAttribute:NSForegroundColorAttributeNamevalue:colorArray[i] range:_range];
}
// 改变字体大小
if (fontArray.count >= (i+1)) {
_font = [UIFont systemFontOfSize:[fontArray[i] floatValue]];
[mutAttStr addAttribute:NSFontAttributeNamevalue:_fontrange:_range];
}
}
[myLabel setAttributedText:mutAttStr];
}
//
/**
改变 UIButton 的文本的 两种以上颜色及字体
使用方式同上
*/
UIButton* Btn=[UIButton buttonWithType:UIButtonTypeCustom];
Btn.frame= CGRectMake(60, 260, 200, 60);
Btn.backgroundColor= [UIColor yellowColor];
[Btn setTitle:@"按钮:第一次见到你 就心动" forState:UIControlStateNormal];
[Btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.view addSubview:Btn];
[self changeTextBtn:Btn
stringArray:@[@"第一次见到你",@"就心动"] colorArray:@[[UIColor cyanColor],[UIColor redColor]]
fontArray:@[@"18",@"14"]];
// 改变UIButton的文本的 两种以上颜色及字体
+ (void)changeTextBtn:(UIButton *)myBtn
stringArray:(NSArray *)strArray
colorArray:(NSArray *)colorArray
fontArray:(NSArray *)fontArray {
NSMutableAttributedString *mutAttStr = [[NSMutableAttributedString alloc] initWithString:myBtn.titleLabel.text];
NSString* _str = nil;
UIFont* _font = nil;
NSRange _range = NSMakeRange(0, 0);
for (int i=0; i
//NSLog(@"---> strArray.count = %ld",strArray.count);
_str = strArray[i];
NSUInteger location = [[mutAttStr string] rangeOfString:_str].location;
NSUInteger length = [[mutAttStr string] rangeOfString:_str].length;
_range = NSMakeRange(location, length);
// 改变颜色
if (colorArray.count >= (i+1)) {
[mutAttStr addAttribute:NSForegroundColorAttributeName value:colorArray[i] range:_range];
}
// 改变字体大小
if (fontArray.count >= (i+1)) {
_font = [UIFont systemFontOfSize:[fontArray[i] floatValue]];
[mutAttStr addAttribute:NSFontAttributeName value:_font range:_range];
}
}
[myBtn setAttributedTitle:mutAttStr forState:UIControlStateNormal];
}