swift macos swift2 nswindow swift3

swift - Mantenga la ventana siempre en la parte superior?



macos swift2 (2)

En Objective-C para Cocoa Apps, ¿es posible usar esa forma para mantener la ventana siempre en la parte superior?

¿Cómo lograr lo mismo con Swift?

self.view.window?.level = NSFloatingWindowLevel

Causa error de compilación Use of unresolved identifier ''NSFloatingWindowLevel''


Para cambiar el nivel de la ventana no puede hacerlo dentro de viewDidload porque la propiedad de la ventana de la vista siempre será nula, pero puede hacerse anulando el método viewDidAppear o en un método 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

Finalmente, arreglaron la sintaxis impar:

view.window?.level = .floating


Yo preferiría de esta manera. Esto ignora todas las demás aplicaciones activas y hace que tu aplicación sea anticipada.

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