我在 IB 中有一个绑定到控制器的标签(NSTextField)。控制器在 awakeFromNIB 上将标签的属性值设置为包含一些彩色文本和一个或两个链接。
当您看到标签时,它包含正确的字符串值,但某些格式会丢失 - 直到您单击标签,它会更新以包含正确的格式。
我正在使用此代码来设置值:
[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 字体。然后,当您单击标签时,字体会更改大小和外观,并且链接会神奇地呈现。
关于如何让字符串第一次正确呈现的任何想法?