Я не уверен, что эта информация будет вам чем-то полезна, но если вы все еще ищете ответы…
Чтобы установить цвет текста строки с атрибутами, вы должны добавить объект NSColor
в словарь атрибутов строки с атрибутами с ключом NSForegroundColorAttributeName
. Я покажу вам несколько способов, которые я знаю, как это сделать.
Создание атрибутивной строки из объекта NSString
:
NSDictionary *attrs = @{NSForegroundColorAttributeName:[NSColor redColor]};
NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:@"Hello"
attributes:attrs];
Из существующего объекта NSAttributedString
:
NSMutableAttributedString *tempAttributedString = anExistingAttributedString.mutableCopy;
[tempAttributedString addAttribute:NSForegroundColorAttributeName
value:[NSColor redColor]
range:NSMakeRange(0, tempAttributedString.length)];
anExistingAttributedString = tempAttributedString;
Таким образом, в подклассе вы, вероятно, захотите перехватить значение, переданное -setAttributedStringValue:
, следующим образом:
- (void)setAttributedStringValue:(NSAttributedString *)attributedStringValue
{
NSMutableAttributedString *temp = attributedStringValue.mutableCopy;
[temp addAttribute:NSForegroundColorAttributeName
value:[NSColor redColor]
range:NSMakeRange(0, temp.length)];
[super setAttributedStringValue:temp];
}
Это может быть или не быть лучшим способом решения проблем, но поскольку информации о подклассах так мало, мне кажется, что это хорошая ставка. Если вы все это уже знаете, прошу прощения за многословный ответ. Если вы этого не сделаете, надеюсь, это поможет! Удачи.
person
Ben Stock
schedule
26.05.2014