macOS 开发 tips

815 阅读1分钟

macOS 开发 tips

有些时候突然兴起想写个Mac软件,但是Mac软件开发真的后妈养的,资料少,坑多。。。 在这里记录下自己遇到的一些小问题和解决办法。

判断 dark mode

使用 effectiveAppearance,去做判断

class func isDarkMode(view: NSView) -> Bool {
    if #available(macOS 10.14, *) {
        if let appearence = view.effectiveAppearance {
            let current = appearence.bestMatch(from: [NSAppearance.Name.darkAqua, NSAppearance.Name.aqua])
            return current == NSAppearance.Name.darkAqua
        }
    }
    return false
}

响应用户点击dock图标的事件

以下俩方法监听哪个都可以 tab切换和图标点击都会触发

- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender;
- (BOOL)applicationOpenUntitledFile:(NSApplication *)sender;

动态修改app在dock中显示的图标

代码真的很简单,就是找到这行代码的过程有点长

let image = NSImage.init(named: "green")
NSApplication.shared.applicationIconImage = image

APP关闭窗口,dock 中的APP消失

Xcode11 默认在plist文件中设置NSSupportsAutomaticTermination为true。

会导致APP被闲置时自动被终结。

activity 查看会发现APP还存在,双击打开APP会发现之前的内存数据都在。 APP 并没有结束工作,只是dock中的APP图标消失,或者显示未激活状态。 不晓得是不是个bug,还是我理解不到位。求各位大神指导。

隐藏Dock中APP图标

NSApplication.shared.presentationOptions = .hideDock

通过设置presentationOptions同样可隐藏 menu