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

shr*_*ads 16 cocoa interface-builder

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

Dir*_*oop 26

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

像这样:

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


Ole*_*kov 16

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

完全没有代码:

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

XCode中的窗口属性

  • 它适用于10.10,刚刚为@SpaceDog拍摄了一段专辑:[http://www.youtube.com/watch?v=I0AHPxvNlp8](http://www.youtube.com/watch?v=I0AHPxvNlp8) (2认同)

Pet*_*sey 5

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

或者,您可以设置无边框NSImageViewNSColorWell内容视图,但我不确定Apple对于那些拥有子视图的人来说意味着什么.如果没有,你必须把你的窗户留空.

这就是说,你应该真正确保自定义背景色为宜.几乎总是,它不是,你应该坚持使用Aqua或HUD外观.


dic*_*ciu 1

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

- (id)initWithContentRect:(NSRect)contentRect
                styleMask:(NSUInteger)styleMask
                  backing:(NSBackingStoreType)bufferingType
                    defer:(BOOL)flag
Run Code Online (Sandbox Code Playgroud)

作为示例,请参阅 Mat Gemmell 的 HUDWindow:http://mattgemmell.com/2006/03/12/hudwindow