设置NSForegroundColorAttributeName

时间:2015-09-11 12:24:46

标签: ios objective-c nsattributedstring uicolor

我正在尝试在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]];然后它不起作用。正如在文本中保持完全白色。

然而,当我在代码中有那一行时,它按预期工作(即:传递给方法的单词变为蓝色)。我希望有人可以解释为什么会出现这种情况。如果它是一个错误,那么其他人知道一个解决方案是有好处的。

非常感谢。

0 个答案:

没有答案