Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如何为NSWindow指定特定的背景色_Cocoa_Interface Builder - Fatal编程技术网

Cocoa 如何为NSWindow指定特定的背景色

Cocoa 如何为NSWindow指定特定的背景色,cocoa,interface-builder,Cocoa,Interface Builder,我正在编写一个cocoa应用程序,它有一个nswindows窗口。我想将窗口的背景色更改为特定颜色。但检查器中的窗口属性仅提供“纹理窗口”选项。如何使窗口的颜色符合要求?您必须将NSWindow子类化,以便更改背景,然后覆盖其实现 - (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)styleMask backing:(NSBackingStor

我正在编写一个cocoa应用程序,它有一个nswindows窗口。我想将窗口的背景色更改为特定颜色。但检查器中的窗口属性仅提供“纹理窗口”选项。如何使窗口的颜色符合要求?

您必须将NSWindow子类化,以便更改背景,然后覆盖其实现

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

例如,请参见Mat Gemmell的HUD窗口:

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

或者,您可以将无边界的
NSImageView
NSColorWell
设置为内容视图,但我不确定苹果是否意味着这些视图都有子视图。如果不是,你就得让窗户空着


也就是说,您应该确实确定自定义背景颜色是合适的。通常情况下,情况并非如此,您应该坚持使用Aqua或HUD外观。

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

像这样:

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

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

完全没有代码:

  • 选择您的窗口(NSWindow类应显示在类字段中)
  • 单击用户定义的运行时属性下的[+]按钮
  • 键入“backgroundColor”并选择颜色

  • 自回答此问题以来,是否有重大更新<代码>窗口未定义,当我实际获取窗口引用时,
    backgroundColor
    setBackgroundColor
    不做任何操作。同意。这在UIKit(使用
    UIColor
    )中可以使用,但在AppKit中不能使用。@Jeff此代码必须是自定义NSWindowController子类的一部分,您最好将其放入awakeFromNib中,以便在从Nib文件加载窗口时调用它。@Zev它在AppKit中可以使用,已经使用此代码两年多了。但请参阅Arclite的答案,它将仅在窗口配置为纹理的情况下工作。
    self.window在使用故事板时不可用。它在10.10上工作,刚刚为@SpaceDog拍摄了一段特别视频:我发现由于某种原因,一些或所有用户定义的运行时属性在生成的故事板中的NSWindow实例上不起作用,使用10.10和XCode 6.4。我首先遇到了titlebarAppearsTransparent,然后用背景色确认了同样的行为。为了配置而不得不返回子类化,这非常烦人。