Какао NSTextField - привязка и настройка атрибутов
- У меня есть xib с меткой (TheLabel)... которая является NSTextField. Это текст не редактируется пользователем.
- У меня есть значение привязано к NSString* в моем классе контроллера.
- У меня есть его шрифт, связанный с NSFont * в моем классе контроллера.
Я могу изменить строку NSString в своем классе контроллера, и я вижу, что это отражено на этикетке.
Я могу изменить NSFont в своем классе контроллера, и я вижу, что это отражено на этикетке.
Но...
Я не могу на всю жизнь понять, как включить и выключить подчеркивание.
Если я вызову эту функцию...
-(void)setUnderlineType:(NSNumber*)underline
{
NSMutableAttributedString* content = [[TheLabel attributedStringValue] mutableCopy];
[content addAttribute:NSUnderlineStyleAttributeName value:underline range:NSMakeRange(0, content.length)];
[TheLabel setAttributedStringValue:content];
}
... Я получаю подчеркивание, но тогда связанный шрифт игнорируется, и я получаю некоторый стандартный шрифт. С тех пор изменение NSFont в моем контроллере не оказывает видимого влияния на NSTextField.
Я пытался удалить атрибуты из 'содержимого' перед добавлением подчеркивания... удаление атрибутов шрифта... но это тоже не работает.
Каждый раз, когда я вызываю эту функцию, шрифт, связанный с NSTextField, становится "игнорируемым", и я вижу, что стандартный шрифт имеет стандартный размер.
Любое руководство будет с благодарностью.
1 ответ
Вам нужно установить NSFontAttributeName
to update a font of NSAttributedString
,
NSFont *font = ...;
NSMutableAttributedString* content = [[theLabel attributedStringValue] mutableCopy];
[content addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, content.length)];
[theLabel setAttributedStringValue:content];