如何给NSWindow一个特定的背景颜色

时间:2008-12-29 11:43:54

标签: cocoa interface-builder

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

4 个答案:

答案 0 :(得分:26)

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

像这样:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Option 1
    [self.window setBackgroundColor: NSColor.whiteColor];
    // Option 2 - using dot syntax
    self.window.backgroundColor = NSColor.whiteColor;
}

答案 1 :(得分:14)

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

根本没有代码:

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

答案 2 :(得分:5)

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

或者,您可以设置无边框NSImageViewNSColorWell作为内容视图,但我不确定Apple是否适用于拥有子视图的用户。如果没有,你必须把你的窗户留空。

那就是说,你应该确实确保自定义背景颜色是合适的。几乎总是,它不是,你应该坚持使用Aqua或HUD外观。

答案 3 :(得分: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