2015-01-25 3 views
0
  • У меня есть xib с меткой (TheLabel) ... которая является NSTextField. Текст не редактируется пользователем.
  • У меня есть значение, связанное с NSString * в моем классе контроллера.
  • У меня есть шрифт, связанный с NSFont * в моем классе контроллера.

Я могу изменить NSString в классе контроллера, и я вижу, что это отражено в метке.Какао NSTextField - атрибуты привязки и настройки

Я могу изменить 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, становится «проигнорированным», и я вижу, что стандартный шрифт является стандартным размером.

Любое руководство будет принята с благодарностью.

ответ

0

Чтобы обновить шрифт NSAttributedString, вам необходимо установить NSFontAttributeName.

NSFont *font = ...; 
NSMutableAttributedString* content = [[theLabel attributedStringValue] mutableCopy]; 
[content addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, content.length)]; 
[theLabel setAttributedStringValue:content]; 
+0

Благодарим за попытку, но, к сожалению, это не решит проблему. Конечно, когда я устанавливаю подчеркивание, я вижу изменение текста ... у него есть подчеркивание И правильный шрифт, но потом, когда я сменил «TheFont» моего контроллера, который должен быть привязан к элементу управления, привязка и я не вижу изменений в отображаемом NSTextField. Я начинаю думать, что мне нужно отказаться от привязки ZXIB и всегда устанавливать атрибутную строку NSTextField, когда нужно изменить шрифт или подчеркивание. – BuzzB

Смежные вопросы