cocoa - 当 mainWindow 改变时重绘 NSView

标签 cocoa swift2 appkit redraw

我想根据窗口是否获得焦点来更改 NSView 的背景。

我发现了这个问题:Change NSView background color when window has focus

第一个答案工作正常,只是当窗口失去或获得焦点时不会触发重绘。

如何在主窗口发生变化时触发重绘?

最佳答案

在您的 NSWindow 委托(delegate)中:

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
    }
}

关于cocoa - 当 mainWindow 改变时重绘 NSView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32293592/

相关文章:

macos - 我需要从我的 Mac 应用程序中的一张图像中删除标记的对象。无论如何,有这样做吗?

java - 与 Java 相比,Objective C 中的术语和概念有哪些不同的名称?

cocoa - NSOutlineView 不重绘

objective-c - 只有成功才能在 SenTest 中运行代码的任何方法?

ios - 使用 Swift 数组执行此操作的等效方法

ios - 快速点击(选择)最后一个选项时取消选择所选选项

json - 使用 Swift 2 的 Alamofire POST 请求

ios - 如何取消正在进行的NSArray排序?

macos - 如何获取 NSDatePicker 中当前选定的元素?

objective-c - 从音频文件中获取专辑封面、歌曲名称、专辑名称和艺术家姓名