Cocoa NSTextField - 绑定和设置属性
Posted
技术标签:
【中文标题】Cocoa NSTextField - 绑定和设置属性【英文标题】:Cocoa NSTextField - binding and setting attributes 【发布时间】:2015-01-25 20:47:12 【问题描述】: 我有一个带有标签的 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
来更新NSAttributedString
的字体。
NSFont *font = ...;
NSMutableAttributedString* content = [[theLabel attributedStringValue] mutableCopy];
[content addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, content.length)];
[theLabel setAttributedStringValue:content];
【讨论】:
感谢您的尝试,但不幸的是,这并不能解决问题。当然,当我设置下划线时,我看到文本发生了变化......它有一个下划线和正确的字体,但是后来,当我更改我的控制器“TheFont”时,它应该绑定到控件,绑定不见了,我看到显示的 NSTextField 没有任何变化。我开始认为我需要放弃 ZXIB 绑定,只要字体或下划线需要更改,就总是设置 NSTextField 的属性字符串。以上是关于Cocoa NSTextField - 绑定和设置属性的主要内容,如果未能解决你的问题,请参考以下文章
使用 Cocoa 填充 PDF - 使用 NSTextField 内容填充 PDF 文本字段?
Cocoa NSTextField 拖放需要子类...真的吗?
更改为等宽数字字体后,Cocoa NSTextField 文本在视图中被截断