iOS设置改变UILabel、UIButton的多种颜色和字体大小(非常好用)

简介:

UILabel 中的文字有时会有:不同的字体大小、不同的颜色,现在一个方法即可解决这一问题,

具体使用方式,如下案例:

//创建label

 UILabel *label = [[UILabel allocinitWithFrame: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.textAlignmentNSTextAlignmentCenter;

    [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

 字符串颜色字体2...

 一一对应,具体效果,由测试案例便可知晓

 */

+ (void)changeTextLab:(UILabel *)myLabel

               stringArray:(NSArray *)strArray

                colorArray:(NSArray *)colorArray

                 fontArray:(NSArray *)fontArray {

    NSMutableAttributedString *mutAttStr = [[NSMutableAttributedString allocinitWithString:myLabel.text];

    NSString* _str =nil;

    UIFont*  _font =nil;

    NSRange _range =NSMakeRange(0,0);

    for (int i=0; i<strArray.count; i++) {

        //NSLog(@"---> strArray.count = %ld",strArray.count);

        _str = strArray[i];

        NSUInteger location = [[mutAttStr stringrangeOfString:_str].location;

        NSUInteger length   = [[mutAttStr stringrangeOfString:_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<strArray.count; 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];

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值