0

I am using UILable to display data. I have one NSString @"Hello How are you?". I want to display each word in different color. For Example Hello - in red Color , How - in yellow color etc.

I tried lot but I don't find any solution for this. Is there any idea to anyone How can i get solution?

Thanks in Advance.

4

2 に答える 2

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];
}

ワーキングプロジェクトはこちら

于 2013-03-29T08:55:57.383 に答える
0

追加します

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

または、ユーザーがスペースバーを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];
YOURTEXTFIELD.font=[UIFont fontWithName:@"HelveticaNeue-UltraLight" size:18.0f];

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


}

それを試してみてください!

于 2014-05-27T12:25:10.650 に答える