我有一个显示为问题的UILabel。它成功显示以编程方式分配给它的问题文本。但是后来根据一个if else条件,我必须更改标签中的文本。具体来说,我想在字符串的末尾显示一个星号(*)标记,如果这是一个强制性的问题。*应该是红色的,文本的其余部分应该是黑色的。但它只显示问题而不是*标记。如果我尝试打印questLabel.text,它会在最后给出带*标记的问题。这是我正在尝试的代码< / p>
questText = questLabel.text;
questText = [questText stringByAppendingString:@"✶"];
NSMutableAttributedString * str = [[NSMutableAttributedString alloc] initWithString:questText];
NSMutableAttributedString *text =
[[NSMutableAttributedString alloc]
initWithAttributedString: str];
int length = (int)text.length;
[text addAttribute:NSForegroundColorAttributeName
value:[UIColor redColor]
range:NSMakeRange(length-1, 1)];
[questLabel setAttributedText: text];
如果我尝试打印questLabel.attributedText:
的值Question{
}✶{
NSColor = "UIDeviceRGBColorSpace 1 0 0 1";
}
questLabel.text的值是:Question✶
请帮我解决这个问题..提前谢谢..
答案 0 :(得分:1)
您应该将代码更改为此。
NSString *questText = questLabel.text;
questText = [questText stringByAppendingString:@"✶"];
NSMutableAttributedString *text =
[[NSMutableAttributedString alloc] initWithString:questText];
int length = (int)text.length;
[text addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(0, length-1)];
[text addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(length-1, 1)];
[questLabel setAttributedText: text];
答案 1 :(得分:0)
你也可以尝试这个
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:self.questLabel.text attributes:@{NSForegroundColorAttributeName:[UIColor blackColor]}];
NSMutableAttributedString *starString = [[NSMutableAttributedString alloc] initWithString:@"✶" attributes:@{NSForegroundColorAttributeName:[UIColor redColor]}];
[string appendAttributedString:starString];
[self.questLabel setAttributedText:string];