改变Label不同的字显示不同的颜色

本文详细介绍了如何在iOS开发中,通过代码实现特定文本样式的变化,例如改变指定文本的颜色。以'点击注册按钮,即表示您已同意隐私条款和服务协议'为例,演示了如何将‘注册’字样设置为红色。

有时候开发的时候为了看起来效果很好,产品会要求某一行的一段文字显示不一样的颜色如图“注册”颜色为红色,其他的为黑色

那么我们就要分开来写代码了。

如果是要求固定的位置变成什么颜色。比如显示的子为“点击注册按钮,即表示您已同意隐私条款和服务协议”我想要“注册”的字体变成红色其他的不变。


 self.enterLabel = [[UILabel alloc]initWithFrame:CGRectMake(20, 0, 200, 30)];
 self.enterLabel.textAlignment = NSTextAlignmentLeft;
 self.enterLabel.font = [UIFont systemFontOfSize:13];
 [self.view addSubview:self.enterLabel];

 NSMutableAttributedString *str = [[NSMutableAttributedString alloc]initWithString:textStr];
            [str addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(0,2)];
            [str addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(3,2)];
            [str addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(6,19)];
 self.enterLabel.attributedText = str;

这样的话”注册”字的颜色就会变成红色

也可以


    UILabel* noteLabel = [[UILabel alloc] init];
    noteLabel.frame = CGRectMake(60, 100, 250, 100);
    noteLabel.textColor = [UIColor blackColor];
    noteLabel.numberOfLines = 2;

    NSMutableAttributedString *noteStr = [[NSMutableAttributedString alloc] initWithString:@"点击注册按钮,即表示您已同意隐私条款和服务协议"];
    NSRange redRange = NSMakeRange([[noteStr string] rangeOfString:@"注册"].location, [[noteStr string] rangeOfString:@"注册"].length);
    [noteStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:redRange];

    NSRange redRangeTwo = NSMakeRange([[noteStr string] rangeOfString:@"条款"].location, [[noteStr string] rangeOfString:@"条款"].length);
    [noteStr addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:redRangeTwo];



    [noteLabel setAttributedText:noteStr];
    [noteLabel sizeToFit];
    [self.view addSubview:noteLabel];

看到的效果就是
这里写图片描述
这样就达到了目的了。

如果是判断里面的数字全变红色

      NSString *textStr = @"是23.0的非公开水电费562";

    NSMutableAttributedString *noteStr = [[NSMutableAttributedString alloc] initWithString:textStr];
    NSString *temp = nil;

    for(int i =0; i < [textStr length]; i++)
    {
        temp = [textStr substringWithRange:NSMakeRange(i, 1)];
        NSScanner* scan = [NSScanner scannerWithString:temp];
        int val;

        if ( [scan scanInt:&val] && [scan isAtEnd]) {

            NSRange redRange = NSMakeRange(i, [[noteStr string] rangeOfString:temp].length);
            [noteStr addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithHexString:@"67b440"] range:redRange];
        }
    }

    noteLabel.attributedText = noteStr;

写的不好的地方请指出。
谢谢!

<think> 我们正在处理用户的问题:如何在Python Tkinter中改变Label组件的文颜色? 根据提供的引用,我们可以找到以下相关信息: 引用[2]和引用[3]中给出了Label组件的使用示例,其中在创建Label时可以设置参数。 引用[3]中有一个例子:`thelabel = Label(root,text='就这?\nso what?',justify=LEFT,image=photo,compound=CENTER,font=('仿宋',20),fg='red')` 这里使用了`fg='red'`,这个`fg`参数就是设置前景色,即文颜色。 同样,引用[4]中提到了Label组件用于显示文本,并且可以设置字体等属性,但没有直接提到颜色设置。 因此,我们可以确定,设置Label颜色的方法是使用`fg`参数,该参数可以接受颜色名称(如'red'、'blue')或十六进制颜色码(如'#FF0000'表示红色)。 另外,我们还可以在创建Label后,使用`config`方法来动态改变颜色,例如: label.config(fg='green') 所以,回答用户的问题,有两种方法: 1. 在创建Label时通过`fg`参数设置文颜色。 2. 创建后通过`config`方法修改`fg`属性。 下面我们给出一个示例代码: </think> 在Python Tkinter中,改变Label组件文颜色的方法主要有以下两种方式: ### 方法一:创建Label时使用`fg`参数 在初始化Label组件时,直接通过`fg`(foreground的缩写)参数设置文颜色: ```python from tkinter import * root = Tk() # 设置红色文 label_red = Label(root, text="红色文", fg='red', font=("仿宋", 14)) label_red.pack() # 设置蓝色文 label_blue = Label(root, text="蓝色文", fg='#0000FF', font=("宋体", 14)) label_blue.pack() root.mainloop() ``` - `fg`参数支持颜色名称(如`'red'`, `'blue'`)或十六进制颜色码(如`'#FF0000'`) - 颜色设置需与`font`参数配合使用以确保效果可见[^2][^3] ### 方法二:创建后使用`config()`方法修改 若需动态改变颜色,可在创建Label后通过`config()`方法更新: ```python from tkinter import * def change_color(): label.config(fg='green') # 点击按钮后变为绿色 root = Tk() label = Label(root, text="点击变色", fg='black', font=("黑体", 14)) label.pack() Button(root, text="变色", command=change_color).pack() root.mainloop() ``` ### 颜色设置技巧 1. **命名颜色**:使用预定义颜色名称(约140种),如`'coral'`, `'skyblue'` 2. **RGB值**:使用十六进制格式`'#RRGGBB'`,例如`'#FF5733'`表示橙色 3. **系统颜色**:使用系统主题色,如`'SystemWindowText'` > **注意**:颜色效果受系统主题限制,建议在目标平台测试显示效果[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值