我正在尝试在NSMutableAttributedString
中设置文字的颜色。我有一个名为SectionTitleLabel
的基类:
@implementation SectionTitleLabel
+ (void)initialize
{
[[self appearance] setTextColor:[UIColor whiteColor]];
[[self appearance] setFont:[UIFont fontWithName:kFontBold size:16.0f]];
}
@end
我创建了一个自定义类,它继承自上面的基类,并有一个名为addAttributes的方法。
@interface PLSLabel : SectionTitleLabel
- (void)addAttributes:(NSArray *)words;
在实现中,我有以下代码:
- (void) addAttributes:(NSArray *)words
{
self.words = words;
[self setTextColor:[UIColor whiteColor]]; // When this line is taken out the attributed text is not applied.
for (NSString *word in self.words) {
NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithAttributedString:self.attributedText];
NSRange range = [self.text rangeOfString:link];
NSLog(@"TEST TEST: %@", link);
[attributedText addAttributes:@{NSForegroundColorAttributeName : [UIColor blueColor]} range:NSMakeRange(range.location, range.length)];
self.attributedText = attributedText;
}
}
如果我从addAttributes方法中取出以下行
[self setTextColor:[UIColor whiteColor]];
然后它不起作用。正如在文本中保持完全白色。
然而,当我在代码中有那一行时,它按预期工作(即:传递给方法的单词变为蓝色)。我希望有人可以解释为什么会出现这种情况。如果它是一个错误,那么其他人知道一个解决方案是有好处的。
非常感谢。