无法为使用NSToolbar的NSWindowController设置NSButtonCell的背景色



通过在windowDidLoad中使用以下内容,我成功地更改了大多数xib窗口上NSButtonCells的背景:

[[self.generalOkButton cell] setBackgroundColor:[NSColor blueColor]];

出于某种原因,当我尝试在"首选项"窗口控制器中执行此操作时(其中包括一个带有NSViews的工具栏,根据选择的ToolbarItem进行交换),任何视图中任何按钮的背景色都不会更改。

现在,我已经遍历了代码,并确保代码中的按钮确实有一个引用(通过IBOutlet),然后在调用方法更改它之前和之后,我都查看了backgroundColor。它确实在改变,但由于某种原因,该窗口中的按钮都没有反映出它们的背景已经改变。

是否有什么原因导致它在windowDidLoad中不起作用,因为NSViews在Window中交换?我尝试将设置背景颜色的代码移动到交换视图的方法中,但仍然没有效果。

任何想法/建议都将不胜感激。感谢

更新

irc上有人建议我KVO观察NSButtonCell,看看它是否被改回来了。

我设置了这个,当我设置颜色时,我看到了变化,但仅此而已。似乎再也没有什么能改变它了。。。。但是按钮仍然没有以正确的背景颜色出现在屏幕上。

日志:

BGColor was changed: {
    kind = 1;
    new = "NSCalibratedRGBColorSpace 0 0.423529 0.792157 1";
    old = "<null>";
}

更新2

编写了一个快速的示例项目,显示了选项卡按钮的颜色行为和非选项卡按钮。它将在这里的dropbox上托管一段有限的时间:https://www.dropbox.com/s/nrl71p4yk6iyp4w/TestButtonColor.zip

想明白了。感谢freenode上#macdev的人,他们注意到不需要我使用的一行代码:

[self.window.contentView setWantsLayer:YES];

我并没有真正使用图层,所以不需要设置图层。

一旦我删除了这个,按钮的颜色在那个窗口工作得很好。注意:他们还说,如果我确实需要使用图层,我必须设置按钮图层的背景色才能使其工作。

相关内容

  • 没有找到相关文章

最新更新