2015-08-30 2 views
1

Я хотел бы изменить фон NSView в зависимости от того, сфокусировано ли окно.Перерисовать NSView при изменении mainWindow

Я нашел этот вопрос: Change NSView background color when window has focus

И первый ответ работает отлично, кроме перерисовки не срабатывает, когда окно теряет или получает фокус.

Как я могу вызвать перерисовку при изменении mainWindow?

ответ

1

В вашем NSWindow делегат:

func windowDidBecomeMain(notification: NSNotification) { 
    let theView = ... 
    theView.needsDisplay = true 
} 

func windowDidResignMain(notification: NSNotification) { 
    let theView = ... 
    theView.needsDisplay = true 
} 

В вашем NSView подкласса:

func drawRect(rect: NSRect) { 
    if self.window.isMainWindow { 
     // draw active appearance 
    } else { 
     // draw inactive appearance 
    } 
} 
Смежные вопросы