158

スライダーの値に基づいて次の文字列を表示する調査用のスライダーがあります:「非常に悪い、悪い、大丈夫、良い、非常に良い」。

スライダーのコードは次のとおりです。

- (IBAction) sliderValueChanged:(UISlider *)sender {
    scanLabel.text = [NSString stringWithFormat:@" %.f", [sender value]];
    NSArray *texts=[NSArray arrayWithObjects:@"Very Bad", @"Bad", @"Okay", @"Good", @"Very Good", @"Very Good", nil];
    NSInteger sliderValue=[sender value]; //make the slider value in given range integer one.
    self.scanLabel.text=[texts objectAtIndex:sliderValue];
}

「非常に悪い」を赤、「悪い」をオレンジ、「まあまあ」を黄色、「良い」と「非常に良い」を緑にしたいと思います。

これを行うために使用する方法がわかりませんNSAttributedString

4

9 に答える 9

212

を使用する必要はありませんNSAttributedString。必要なのは、適切なtextColor. さらに、このシンプルなソリューションは、iOS 6 だけでなく、すべてのバージョンの iOS で動作します。

しかし、不必要に を使用したい場合はNSAttributedString、次のようにすることができます。

UIColor *color = [UIColor redColor]; // select needed color
NSString *string = ... // the string to colorize
NSDictionary *attrs = @{ NSForegroundColorAttributeName : color };
NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:string attributes:attrs];
self.scanLabel.attributedText = attrStr;
于 2013-01-11T22:50:39.413 に答える
113

このようなものを使用してください(コンパイラはチェックされていません)

NSMutableAttributedString *string = [[NSMutableAttributedString alloc]initWithString:self.text.text];
NSRange range=[self.myLabel.text rangeOfString:texts[sliderValue]]; //myLabel is the outlet from where you will get the text, it can be same or different

NSArray *colors=@[[UIColor redColor],
                  [UIColor redColor],
                  [UIColor yellowColor],
                  [UIColor greenColor]
                 ];

[string addAttribute:NSForegroundColorAttributeName 
               value:colors[sliderValue] 
               range:range];           

[self.scanLabel setAttributedText:texts[sliderValue]];
于 2013-01-11T22:07:11.607 に答える