1. Xcode Version 7.3 (7D175)
2.swift Version 2.2
3.Mac OS Version OS X EI Capitan 10.11.4
Ich möchte eine Desktop-Anwendung für Mac OS machen und Ich hatte die Fensterebene eingestellt, aber es funktioniert nicht.wie man Fenster mit swift immer an der Spitze hält?
Antwort
Sie müssen Fenster überprüfen! = Nil vor jedem benutzerdefinierten Code
class ViewController: NSViewController {
var addedObserver = false
override func viewDidLoad() {
super.viewDidLoad()
if let window = self.view.window {
// custom window here
window.level = Int(CGWindowLevelForKey(.FloatingWindowLevelKey))
} else {
addedObserver = true
self.addObserver(self, forKeyPath: "view.window", options: [.New, .Initial], context: nil)
}
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if let window = self.view.window {
// custom window here
window.level = Int(CGWindowLevelForKey(.FloatingWindowLevelKey))
}
}
deinit {
if addedObserver {
self.removeObserver(self, forKeyPath: "view.window")
}
}
}
Vielen Dank. Ich hatte Ihren Code zu meinem Projekt hinzufügen, aber es kann nicht Fenster oben halten –
@SteveJiang hat Code in // benutzerdefinierte Fenster hier aufgerufen werden? Ich habe ein neues Projekt erstellt und diesen Code getestet. Es funktioniert und bringt Fenster zu Font oben, aber ich bin mir nicht sicher, was NSWindow Ebene tun. – larva
'NSApplication.sharedApplication(). Windows.first? .level =' –
noch testen, aber dies ist die Antwort der Larve in Swift 4 und es scheint zu funktionieren.
var observingFloat = false
override func viewDidLoad() {
super.viewDidLoad()
self.view.wantsLayer = true
if self.view.window != nil {
NSApplication.shared.windows.first?.level = NSWindow.Level(rawValue: 1)
} else {
observingFloat = true
self.addObserver(self, forKeyPath: "view.window", options: [.new, .initial], context: nil)
}
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if self.view.window != nil {
NSApplication.shared.windows.first?.level = NSWindow.Level(rawValue: 1)
}
}
- 1. machen Spiel-Fenster "immer an der Spitze" in XNA
- 2. XCode/Swift: wie man eine Leiste mit Bild an der Spitze der Ansicht Controller
- 3. wie sicherstellen, dass JDialog immer an der Spitze bleibt
- 4. Wie mache ich die Navigationsleiste immer an der Spitze?
- 5. Android Widget AppBarLayout kommt immer an der Spitze
- 6. Horizontale UICollectionView mit Header an der Spitze
- 7. Fenster immer oben halten?
- 8. Wie mache ich AdMob an der Spitze?
- 9. IMMER im oberen Fenster
- 10. Wie man das Fenster oben in tcl hält
- 11. Padding an der Spitze der Kopfzeile
- 12. Wie man den Header statisch hält, immer beim Scrollen oben?
- 13. UITableView-Header, der an der Spitze bleibt
- 14. Android NestedScrollView Inhalt an der Spitze ausrichten
- 15. Drupal Vollkalender doppelte Pager an der Spitze
- 16. UITableViewCell Bild verankert an der Spitze
- 17. HTML Ausrichtung Tabellenzeilen an der Spitze
- 18. Heading Hintergrundbild, das an den Rändern und an der Spitze der Seite mit CSS
- 19. Hält immer EOF erwarteten Fehler
- 20. Element an der Spitze eines Arrays sortieren
- 21. FileStream Append Daten an der Spitze
- 22. Flex Scrollen der Leinwand an die Spitze
- 23. Wie verankerte rotierte TextBlock an die Spitze?
- 24. Wie positioniert man ein div an der Spitze eines anderen div mit Javascript?
- 25. Bootstrap: Wie ein Element an der Spitze zu beheben
- 26. Box Schatten mit H-Elemente an der Spitze (Bootstrap 3)
- 27. Zeichnen von Video mit Text an der Spitze
- 28. android xml legte Komponente an der Spitze mit layout_gravity = "center"
- 29. Erzwingen eines Symbols an der Spitze einer ELF-Datei
- 30. Wie man Filterparameter hält. Paginierung
Haben Sie das Fenster vor dem eingestellten Wert (! = Nil) überprüft? – larva
Fenster Eigenschaft ist es wahrscheinlich Null. Nichts ist mit Ihrer Syntax verbunden. –
http://stackoverflow.com/a/35714647/2303865 –