19

我正在编写一个具有 NSWindow 的可可应用程序。我想将窗口的背景颜色更改为特定颜色。但检查器中的窗口属性仅提供“纹理窗口”选项。如何根据需要制作窗口的颜色?

4

4 回答 4

28

尝试使用窗口实例上的颜色调用实例方法 setBackgroundColor:。名字里有什么.. ;)

像这样:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Option 1
    [self.window setBackgroundColor: NSColor.whiteColor];
    // Option 2 - using dot syntax
    self.window.backgroundColor = NSColor.whiteColor;
}
于 2008-12-30T00:50:34.113 回答
16

更改窗口背景的最简单方法是直接在 .xib 文件中设置它。

根本没有代码:

  1. 选择您的窗口(NSWindow 类应出现在 Class 字段中)
  2. 单击用户定义的运行时属性下的 [+] 按钮
  3. 输入“backgroundColor”并选择颜色

XCode 中的窗口属性

于 2014-10-20T13:52:47.650 回答
5

只要你只想改变内容区域的背景颜色,而不是框架和工具栏,你就不需要子类化NSWindow. 您需要做的是子类NSView化并让您的自定义视图绘制您想要的颜色,然后将该类的一个实例设置为窗口的内容视图。

或者,您可以设置无边框NSImageViewNSColorWell作为内容视图,但我不确定 Apple 是否意味着那些拥有子视图。如果没有,您必须将窗口留空。

也就是说,您应该确定自定义背景颜色是合适的几乎总是这样,您应该坚持使用 Aqua 或 HUD 外观。

于 2008-12-29T16:07:03.577 回答
1

您必须继承 NSWindow 才能更改背景,然后覆盖实现

- (id)initWithContentRect:(NSRect)contentRect
                styleMask:(NSUInteger)styleMask
                  backing:(NSBackingStoreType)bufferingType
                    defer:(BOOL)flag

例如,参见 Mat Gemmell 的 HUDWindow:http ://mattgemmell.com/2006/03/12/hudwindow

于 2008-12-29T12:07:49.940 回答