我有一个调查滑块,根据滑块的值显示以下字符串:“非常糟糕,糟糕,好,好,非常好” .
以下是滑块的代码:
- (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
来完成这项工作 .
6 回答
对于 Swift 4:
对于 Swift 3:
在 Swift 4 :
在 Swift 3 :
请享用 .
无需使用
NSAttributedString
. 您只需要一个带有正确textColor
的简单标签 . 此外,这个简单的解决方案适用于所有版本的iOS,而不仅仅是iOS 6 .但如果您不必要地使用
NSAttributedString
,您可以执行以下操作:使用这样的东西(未编译器检查)
你可以创建NSAttributedString
或NSMutableAttributedString使用范围应用自定义属性 .
可用属性:NSAttributedStringKey
使用Swift 4,
NSAttributedStringKey
有一个名为foregroundColor
的静态属性 .foregroundColor
有以下声明:以下Playground代码显示如何使用
foregroundColor
设置NSAttributedString
实例的文本颜色:下面的代码显示了一个可能的
UIViewController
实现,该实现依赖于NSAttributedString
,以便从UISlider
更新UILabel
的文本和文本颜色:但请注意,您并不需要使用
NSAttributedString
作为这样的示例,并且可以简单地依赖UILabel
的text
和textColor
属性 . 因此,您可以使用以下代码替换updateDisplay()
实现: