Wie kann ich ein Cocoa-Fenster erstellen, das über dem Vollbildfenster angezeigt wird?

8

Ich muss ein "Vollbild-Overlay-Fenster" in einem Programm für OS X erstellen. Genauer gesagt muss das Fenster immer über allen anderen Fenstern stehen, einschließlich über der Menüleiste im nicht-maximierten Fenster Räume, und oben auf maximierte Fenster in ihren eigenen Räumen und oben während Exposé. Es darf nicht an "change space" -Animationen teilnehmen; h. seine Position muss immer relativ zum physischen Bildschirm festgelegt sein. (Das Fenster ist halbtransparent und ignoriert Mausereignisse, aber ich weiß bereits, wie das geht.)

Wie erreiche ich dieses "Overlay-Fenster" -Verhalten? Ich bin so weit gekommen:

  • Ich sollte window.level auf CGWindowLevelKey(kCGMaximumWindowLevelKey) setzen, damit es immer über anderen Fenstern im selben Raum steht.
  • Ich sollte NSWindowCollectionBehaviorStationary so einstellen, dass das Fenster während des Exposés an Ort und Stelle bleibt.

Was ich nicht weiß, ist, wie ich dieses Verhalten beim Platzwechsel beibehalten soll. Ich dachte, ich sollte NSWindowCollectionBehaviorCanJoinAllSpaces setzen, aber sein Verhalten hat zwei Probleme:

  • Das Fenster erscheint nicht über anderen Vollbildfenstern.
  • Das Fenster wird dupliziert auf jedem Speicherplatz, anstatt an der gleichen Stelle über allen Leerzeichen zu bleiben. Dies ist wichtig wegen der Space-Switch-Animation.

Ich habe gehört, dass ein NSPanel mir helfen würde , aber ich habe es getan nicht in der Lage, dies auch zu tun.

Kurz gesagt, Kann in OS X ein Fenster über einem Vollbildfenster angezeigt werden? Können Sie ein kurzes, vollständiges Beispiel geben?

    
jameshfisher 05.01.2016, 18:14
quelle

2 Antworten

1

Sie sollten window.level = CGWindowLevelForKey(.MaximumWindowLevelKey) verwenden.

Ich kann dir mit dem Leerzeichen-Teil nicht helfen.

    
rob mayoff 05.01.2016 18:26
quelle
0

hier ist meine Lösung, es funktioniert ok.

%Vor%     
feell 13.04.2016 06:38
quelle

Tags und Links