【发布时间】:2008-12-29 11:43:54
【问题描述】:
我正在编写一个具有 NSWindow 的可可应用程序。我想将窗口的背景颜色更改为特定颜色。但是检查器中的窗口属性仅提供“纹理窗口”替代方案。如何使窗口的颜色随心所欲?
【问题讨论】:
我正在编写一个具有 NSWindow 的可可应用程序。我想将窗口的背景颜色更改为特定颜色。但是检查器中的窗口属性仅提供“纹理窗口”替代方案。如何使窗口的颜色随心所欲?
【问题讨论】:
尝试调用实例方法 setBackgroundColor: 并在您的窗口实例上使用颜色。名字里有什么.. ;)
像这样:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Option 1
[self.window setBackgroundColor: NSColor.whiteColor];
// Option 2 - using dot syntax
self.window.backgroundColor = NSColor.whiteColor;
}
【讨论】:
window 未定义,当我实际获得窗口引用时,backgroundColor 和 setBackgroundColor 什么也不做。
UIColor),但不适用于 AppKit。
self.window 在使用情节提要时不可用。
更改窗口背景最简单的方法是直接在您的 .xib 文件中进行设置。
根本没有代码:
【讨论】:
只要你只想改变内容区域的背景颜色,而不是框架和工具栏,你就不需要子类NSWindow。您需要做的是继承NSView 并让您的自定义视图绘制您想要的颜色,然后将该类的一个实例设置为窗口的内容视图。
或者,您可以将无边框的NSImageView 或NSColorWell 设置为内容视图,但我不确定Apple 是否意味着这些视图具有子视图。如果没有,您必须将窗口留空。
也就是说,您应该真的确定自定义背景颜色是合适的。几乎总是如此,您应该坚持使用 Aqua 或 HUD 外观。
【讨论】:
你必须继承 NSWindow 才能改变背景,然后重写实现
- (id)initWithContentRect:(NSRect)contentRect
styleMask:(NSUInteger)styleMask
backing:(NSBackingStoreType)bufferingType
defer:(BOOL)flag
例如,参见 Mat Gemmell 的 HUDWindow:http://mattgemmell.com/2006/03/12/hudwindow
【讨论】: