我希望能够使一些行变粗.但是,我尝试@R_561_6502@(在IB中手动,通过vIEwFortableColumn中的代码:……,或通过Font Bold绑定)到目前为止都被忽略了.
从this message开始,这似乎是因为NSOutlineVIEw的源列表样式接管了文本字段的外观:
I’m guessing that you’ve hooked up your text fIEld to the textFIEld outlet of the NStableCellVIEw? If so,I think you might be running into NStableVIEw’s automatic management of appearance for source Lists.
Try disconnecting the text fIEld from the textFIEld outlet and see if your custom Font sticks.
如果我断开textFIEld插座,外观确实在我的控制之下,我的插件工作.
但是,现在我不能让它看起来像自动的.我的意思是,当NSOutlineVIEw管理文本字段的外观时,字体是粗体并且在选择任何项目时获得了投影,但是当我手动管理它时,情况并非如此.
任何人都可以回答以下问题之一:
>当NSOutlineVIEw管理文本字段的外观时,如何使字体粗体绑定起作用
>如果我没有NSOutlineVIEw管理我的文本字段的外观,我怎么能使它看起来和行为像我确实管理它?
NStableCellVIEw通过在包含控件的单元格上设置backgroundStyle属性来管理其textFIEld出口的外观.将此设置为NSBackgroundStyleDark会触发NSTextFIEldCell中的特殊路径,该路径实际上设置了attributionStringValue,更改了文本颜色并通过NSShadowAttributename添加了阴影.
你能做的是两件事:
>在自定义行或单元视图子类中自行设置backgroundStyle.
>在单元格的文本字段中使用自定义NSTextFIEldCell并更改行为/绘图.
我们做了后者,因为我们需要一个主题(不同颜色)表视图的不同外观.我们为此找到的最方便(尽管肯定不是最有效)的位置是覆盖 – drawInteriorWithFrame:inVIEw:并在调用super之前修改单元格的属性字符串,之后恢复原始:
- (voID)drawInteriorWithFrame:(NSRect)cellFrame inVIEw:(NSVIEw *)controlVIEw{ NSAttributedString *originalString = self.attributedStringValue; // Customize string as you like if (/* whatever */) [self setAttributedStringValue: /* some string */]; // Regular drawing [super drawInteriorWithFrame:cellFrame inVIEw:controlVIEw]; // reset string if (self.attributedStringValue != originalString) self.attributedStringValue = originalString;}
希望这可以帮助处于类似情况的其他人.
总结以上是内存溢出为你收集整理的cocoa – NSOutlineView源列表样式,基于视图,更改字体全部内容,希望文章能够帮你解决cocoa – NSOutlineView源列表样式,基于视图,更改字体所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)