如何使用 Swift 使窗口始终位于顶部?

Ste*_*ang 6 swift

我只是创建了一个新的应用程序项目

  • Xcode 7.3 版 (7D175)
  • 斯威夫特 2.2 版
  • Mac OS 版本 OS X El Capitan 10.11.4

我想为 Mac OS 制作一个桌面应用程序,我已经设置了窗口级别,但它不起作用。

Esm*_*AEE 13

让您的应用程序始终位于其他应用程序之上Swift 5是如此简单。

override func viewDidAppear() {
    view.window?.level = .floating
}
Run Code Online (Sandbox Code Playgroud)


lar*_*rva 4

您需要在任何自定义代码之前检查 window != nil

class ViewController: NSViewController {
    var addedObserver = false

    override func viewDidLoad() {
        super.viewDidLoad()

        if let window = self.view.window {
            // custom window here
            window.level = Int(CGWindowLevelForKey(.FloatingWindowLevelKey))
        } else {
            addedObserver = true
            self.addObserver(self, forKeyPath: "view.window", options: [.New, .Initial], context: nil)
        }
    }

    override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
        if let window = self.view.window {
            // custom window here
            window.level = Int(CGWindowLevelForKey(.FloatingWindowLevelKey))
        }
    }

    deinit {
        if addedObserver {
            self.removeObserver(self, forKeyPath: "view.window")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)