web-dev-qa-db-ja.com

ウィンドウを常に手前に表示しますか?

Cocoa AppsのObjective-Cでは、このような方法を使用して、常にウィンドウを一番上に保つことができますか?

Swiftで同じことを実現する方法は?

self.view.window?.level = NSFloatingWindowLevel

ビルドエラーの原因Use of unresolved identifier 'NSFloatingWindowLevel'

35
AlexKorovyansky

ウィンドウレベルを変更するには、viewのウィンドウプロパティは常にnilになりますが、viewDidAppearメソッドまたはIBActionメソッドをオーバーライドすることができるため、viewDidload内ではできません。

スイフト1

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

スイフト2

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

Swift

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

Swift 4

最後に、彼らは奇妙な構文を修正しました:

view.window?.level = .floating
73
Leo Dabus

私はこの方法を好むでしょう。これにより、他のすべてのアクティブなアプリが無視され、アプリが事前に作成されます。

    override func viewWillAppear() {            
        NSApplication.sharedApplication().activateIgnoringOtherApps(true)
    }
2
user6375148