【发布时间】:2013-07-31 00:03:37
【问题描述】:
通过在 windowDidLoad 中使用以下内容,我已成功更改了大多数 xib 窗口上 NSButtonCells 的背景:
[[self.generalOkButton cell] setBackgroundColor:[NSColor blueColor]];
由于某种原因,当我尝试在我的首选项窗口控制器中执行此操作时(其中包括一个带有 NSViews 的工具栏,根据选择的 ToolbarItem 被换出),任何视图中任何按钮的背景颜色确实不改。
现在我已经逐步完成了代码,并确保代码中的按钮确实有一个引用(通过 IBOutlet),然后我在调用方法更改它之前和之后查看了 backgroundColor。它确实在发生变化,但由于某种原因,该窗口中的任何按钮都没有反映它们的背景发生了变化。
是否有某些原因导致它在 windowDidLoad 中不起作用,因为 NSView 正在被换入和换出 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
【问题讨论】:
标签: objective-c macos background-color nsbutton nsbuttoncell