Cocoa 如何为NSWindow指定特定的背景色
我正在编写一个cocoa应用程序,它有一个nswindows窗口。我想将窗口的背景色更改为特定颜色。但检查器中的窗口属性仅提供“纹理窗口”选项。如何使窗口的颜色符合要求?您必须将NSWindow子类化,以便更改背景,然后覆盖其实现Cocoa 如何为NSWindow指定特定的背景色,cocoa,interface-builder,Cocoa,Interface Builder,我正在编写一个cocoa应用程序,它有一个nswindows窗口。我想将窗口的背景色更改为特定颜色。但检查器中的窗口属性仅提供“纹理窗口”选项。如何使窗口的颜色符合要求?您必须将NSWindow子类化,以便更改背景,然后覆盖其实现 - (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)styleMask backing:(NSBackingStor
- (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文件中设置它 完全没有代码:
自回答此问题以来,是否有重大更新<代码>窗口未定义,当我实际获取窗口引用时,
backgroundColor
和setBackgroundColor
不做任何操作。同意。这在UIKit(使用UIColor
)中可以使用,但在AppKit中不能使用。@Jeff此代码必须是自定义NSWindowController子类的一部分,您最好将其放入awakeFromNib中,以便在从Nib文件加载窗口时调用它。@Zev它在AppKit中可以使用,已经使用此代码两年多了。但请参阅Arclite的答案,它将仅在窗口配置为纹理的情况下工作。self.window在使用故事板时不可用。它在10.10上工作,刚刚为@SpaceDog拍摄了一段特别视频:我发现由于某种原因,一些或所有用户定义的运行时属性在生成的故事板中的NSWindow实例上不起作用,使用10.10和XCode 6.4。我首先遇到了titlebarAppearsTransparent,然后用背景色确认了同样的行为。为了配置而不得不返回子类化,这非常烦人。