У меня есть метка (NSTextField) в IB, привязанная к контроллеру. Контроллер на awakeFromNIB устанавливает attributedStringValue метки, чтобы она содержала цветной текст и ссылку или две.
Когда вы видите метку, она содержит правильное строковое значение, но некоторая часть форматирования теряется - до тех пор, пока вы не нажмете на метку, и она не обновится, чтобы содержать правильное форматирование.
Я использую этот код для установки значения:
[self.testTextField setAllowsEditingTextAttributes:YES];
[self.testTextField setSelectable:YES];
NSMutableAttributedString *linkString = [[NSMutableAttributedString alloc] initWithString:@"hit this "];
[linkString beginEditing];
NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString:@"link"];
NSRange range = NSMakeRange(0, [attrString length]);
[attrString addAttribute:NSLinkAttributeName value:[[NSURL URLWithString:@"http://google.com"] absoluteString] range:range];
[attrString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSUnderlinePatternDot] range:range];
[attrString addAttribute:NSForegroundColorAttributeName value:[NSColor blackColor] range:range];
[linkString appendAttributedString:attrString];
[linkString appendAttributedString:[[NSAttributedString alloc] initWithString:@" to search"]];
[linkString addAttribute:NSForegroundColorAttributeName value:[NSColor redColor] range:NSMakeRange(0, [linkString length])];
[linkString endEditing];
[self.testTextField setAttributedStringValue:linkString];
В этом примере вы увидите, что строка окрашена в красный цвет и имеет шрифт Label по умолчанию. Затем, когда вы нажимаете на этикетку, шрифт меняет размер и лицо, и ссылка волшебным образом отображается.
Есть идеи, как добиться правильного рендеринга строки в первый раз?