OSX / Swift使应用程序可在任何地方使用

时间:2016-07-15 05:38:02

标签: swift macos

我有一个用osx swift编写的应用程序,我需要有关特定行为/问题的帮助。我使用此代码将应用程序设置为高于所有其他窗口:

self.window!.level =  Int(CGWindowLevelForKey(Int32(kCGScreenSaverWindowLevelKey)))

从我看到的一个小问题是,它确实有效......但如果我转到我的启动板应用程序菜单,窗口仍会显示。这正是我希望窗口表现的方式,但每当我点击窗口中的按钮时,应用程序将重置为普通桌面以正常运行。我在下面有一个链接证明了这一点:

https://gyazo.com/f4d05c10ad7b5dbf8b95f3bd2aa23cc4

当我点击应用程序中的按钮时,看看我是如何从启动板中取出然后重置为普通桌面屏幕的?我真的需要解决这个问题。

我可以使用任何info.plist属性来防止这种情况发生吗?是否有任何代码可用于使我的窗口在任何地方都可以使用而无需将其重置为正确的桌面环境?提前谢谢!

1 个答案:

答案 0 :(得分:0)

NSFloatingWindowLevel 可能是更好的选择:

import Cocoa

let kCGFloatingWindowLevel: CGWindowLevel =
    CGWindowLevelForKey(CGWindowLevelKey.FloatingWindowLevelKey)

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        self.window!.level =  Int(kCGFloatingWindowLevel)
    }
}

您当前使用的窗口级别类型主要用于屏幕保护程序窗口。如果你想要一个浮动的调色板或窗口,那么使用上面的代码可以给你想要的行为。

NSWindow : NSFloatingWindowLevel