web-dev-qa-db-fra.com

Gardez la fenêtre toujours sur le dessus?

Dans Objective-C pour Cocoa Apps, il est possible d'utiliser une telle façon de garder la fenêtre toujours au top?

Comment réaliser la même chose avec Swift?

self.view.window?.level = NSFloatingWindowLevel

Provoque une erreur de génération Use of unresolved identifier 'NSFloatingWindowLevel'

35
AlexKorovyansky

Pour modifier le niveau de la fenêtre, vous ne pouvez pas le faire dans viewDidload car la propriété window de view y sera toujours nulle mais cela peut être fait en remplaçant la méthode viewDidAppear ou dans une méthode IBAction:

Swift 1

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

Swift 2

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

Swift

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

Swift 4

Enfin, ils ont corrigé la syntaxe étrange:

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

Je préfère cette façon. Cela ignore toutes les autres applications actives et rend votre application immédiate.

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