如何在UITextfield中显示不同颜色的字符串的每个单词

时间:2013-03-29 08:44:18

标签: iphone text uicolor

我正在使用UILable来显示数据。 我有一个NSString @“你好,你好吗?”。我想以不同的颜色显示每个单词。例如Hello - 红色,如何 - 黄色等

我尝试了很多,但我没有找到任何解决方案。对任何人有什么想法我如何获得解决方案?

先谢谢。

2 个答案:

答案 0 :(得分:2)

只需使用:

- (IBAction)go:(id)sender {
    NSMutableAttributedString *string = [[NSMutableAttributedString alloc]initWithString:self.text.text];

     NSArray *words=[self.text.text componentsSeparatedByString:@" "];

     NSArray *colors=[NSArray arrayWithObjects:[UIColor redColor],[UIColor grayColor],[UIColor blueColor],[UIColor blackColor],[UIColor purpleColor],nil];

    for (NSString *word in words) {        
        NSRange range=[self.text.text rangeOfString:word];
        [string addAttribute:NSForegroundColorAttributeName value:colors[arc4random()%colors.count] range:range];
    }
    [self.text setAttributedText:string];
}

* Working project here

答案 1 :(得分:0)

我会添加

YOURTEXTFIELD.font=[UIFont fontWithName:@"HelveticaNeue-UltraLight" size:18.0f];

或任何您想要的字体大小,因为如果用户按空格键两次(或有多个空格),上述功能将产生可怕的结果。 所以功能将变为:

代码:

- (IBAction)go:(id)sender {
    NSMutableAttributedString *string = [[NSMutableAttributedString alloc]initWithString:self.text.text];

     NSArray *words=[self.text.text componentsSeparatedByString:@" "];

     NSArray *colors=[NSArray arrayWithObjects:[UIColor redColor],[UIColor grayColor],[UIColor blueColor],[UIColor blackColor],[UIColor purpleColor],nil];

    for (NSString *word in words) {        
        NSRange range=[self.text.text rangeOfString:word];
        [string addAttribute:NSForegroundColorAttributeName value:colors[arc4random()%colors.count] range:range];
YOURTEXTFIELD.font=[UIFont fontWithName:@"HelveticaNeue-UltraLight" size:18.0f];

    }
    [self.text setAttributedText:string];
YOURTEXTFIELD.font=[UIFont fontWithName:@"HelveticaNeue-UltraLight" size:18.0f];


}

试试吧!