窗口具有焦点时更改NSView背景颜色

时间:2011-07-15 16:22:57

标签: xcode cocoa nsview nsoutlineview

我注意到当应用程序窗口包含“大纲”视图(例如XCode)时,它会在该窗口处于焦点时更改颜色。以XCode为例,如果窗口是当前的,则大纲视图具有蓝色背景,如果它失去焦点则变为灰色,

任何人都可以帮我复制这个吗?我认为它与drawRect:有关,但只能设法在窗口加载时改变颜色。

也许它是一个内置函数,我只是遗漏了什么?

2 个答案:

答案 0 :(得分:3)

您在-drawRect:所要做的就是检查窗口是否具有状态并相应地绘制:

- (void)drawRect:(NSRect)rect
{
    if ([[self window] isMainWindow]) {
        // draw active appearance
    } else {
        // draw inactive appearance
    }
}

答案 1 :(得分:1)

窗口的委托在窗口获取或重新调整主窗口或关键窗口状态时获取消息。您可以在窗口委托中实现适当的方法(如-windowDidBecomeMain:-windowDidResignMain:),以根据需要更新窗口及其子视图。