0
  • 我有一个带有标签(TheLabel)的xib ...这是一个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 的字体都会被“忽略”,并且我看到标准字体是标准大小。

任何指导将不胜感激。

4

1 回答 1

0

您需要设置NSFontAttributeName更新字体NSAttributedString

NSFont *font = ...;
NSMutableAttributedString* content = [[theLabel attributedStringValue] mutableCopy];
[content addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, content.length)];
[theLabel setAttributedStringValue:content];
于 2015-01-26T02:25:05.610 回答