Изменить цвет фона NSView, когда окно имеет фокус - PullRequest
2 голосов
/ 15 июля 2011

Я заметил, что когда окно приложения содержит представление Outline (например, XCode), оно меняет цвет, когда это окно находится в фокусе.Например, для XCode, если окно является текущим, то контурный вид имеет голубоватый фон, если он теряет фокус, он становится серым,

Может кто-нибудь помочь мне воспроизвести это?Я предполагаю, что это как-то связано с drawRect:, но мне удается изменить цвет только при загрузке окна.

Может быть, это встроенная функция, а я что-то упускаю?

Ответы [ 2 ]

3 голосов
/ 15 июля 2011

Все, что вам нужно сделать в вашем -drawRect:, это проверить, имеет ли окно статус main и нарисовать соответственно:

- (void)drawRect:(NSRect)rect
{
    if ([[self window] isMainWindow]) {
        // draw active appearance
    } else {
        // draw inactive appearance
    }
}
1 голос
/ 15 июля 2011

Представитель окна получает сообщения всякий раз, когда окно получает или покидает главное или ключевое состояние окна. Вы можете реализовать соответствующие методы (например, -windowDidBecomeMain: и -windowDidResignMain:) в своем делегате окна для обновления окна и его подпредставлений по мере необходимости.

...