2014-12-10 21 views
24

In Objective-C per Cocoa Apps è possibile utilizzare tale modalità per tenere sempre la finestra sempre in primo piano?Tieni la finestra sempre in primo piano?

Come ottenere lo stesso risultato con Swift?

self.view.window?.level = NSFloatingWindowLevel 

cause costruire errore Use of unresolved identifier 'NSFloatingWindowLevel'

+0

Il link non è più disponibile. – Blaszard

risposta

55

Per modificare il livello di finestra non si può fare all'interno viewDidLoad perché la proprietà della finestra di visualizzazione sarà sempre pari a zero lì, ma può essere fatto ridefinendo il metodo viewDidAppear o in un metodo di IBAction :

Swift 1

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

Swift 2

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

Swift 3

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

Swift 4

Infine hanno fissato la sintassi dispari:

view.window?.level = .floating 
+0

Sembra strano, ma funziona perfettamente! – AlexKorovyansky

+0

Dove dovrebbe andare esattamente quella linea? –

+1

@LeoDabus Perché viene visualizzato l'errore: "Int" non è convertibile in "CGWindowLevelKey"? – sam

3

avrei pref er in questo modo. Questo ignora tutte le altre app attive e rende la tua app in anticipo.

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