一尘不染

保持窗口始终在最前面?

swift

在Objective-C for Cocoa Apps中,可以使用这种方式使窗口始终位于顶部吗?

如何用Swift实现相同的目标?

self.view.window?.level = NSFloatingWindowLevel

导致构建错误 Use of unresolved identifier 'NSFloatingWindowLevel'


阅读 289

收藏
2020-07-07

共1个答案

一尘不染

要更改窗口级别,您不能在viewDidload中执行此操作,因为视图的window属性始终在那里为零,但是可以通过覆盖viewDidAppear方法或IBAction方法来实现:

斯威夫特1

override func viewDidAppear() {
    super.viewDidAppear()
    view.window?.level = Int(CGWindowLevelForKey(kCGFloatingWindowLevelKey))
}

迅捷2

view.window?.level = Int(CGWindowLevelForKey(.FloatingWindowLevelKey))

迅捷3

view.window?.level = Int(CGWindowLevelForKey(.floatingWindow))

斯威夫特4

最后,他们修复了奇怪的语法:

view.window?.level = .floating
2020-07-07