zentriert programmgesteuertes Fenster

8

Ich habe das Beispiel von hier verwendet, um ein benutzerdefiniertes Titelleisten-freies Fenster zu erstellen:

Zeichnen eines benutzerdefinierten Fensters unter Mac OS X

Ich habe festgestellt, dass dies die einzige Möglichkeit ist, ein Titelleisten-freies Fenster in Leopard, Snow Leopard und Lion zu erstellen. Andere Methoden funktionieren nicht direkt auf Leopard oder Lion. (Wenn ich versuche, über normale NSWindow und IB ein fensterloses Fenster aufzurufen, wird es in Leopard nicht mehr gestartet)

Bis jetzt funktioniert dieses benutzerdefinierte Titelleisten-Fenster überall gut, aber ich kann es nicht zentrieren, nur eine feste Position in Interface Builder.

Es ist ziemlich einfach, eine normale NSWindow * -Fensterimplementierung mit [window center] zu zentrieren, aber ich habe nichts gefunden, was in dieser benutzerdefinierten Fensterunterklasse funktioniert, ein Fenster, das nicht über den Interface Builder aus der nib erstellt wird.

Ich habe ein paar Dinge aus NSWindow ausprobiert, aber nichts scheint zu funktionieren.

Irgendwelche Ideen?

    
devilhunter 15.04.2011, 21:52
quelle

4 Antworten

15
%Vor%

Damit wird es in den buchstäblichen Mittelpunkt des Bildschirms gestellt, ohne den Speicherplatz zu berücksichtigen, der vom Dock und der Menüleiste belegt wird. Wenn Sie dies tun möchten, ändern Sie [[window screen] frame] in [[window screen] visibleFrame] .

    
Wekwa 16.04.2011, 00:04
quelle
4

Die Frage sollte wahrscheinlich sein, warum [window center] nicht funktioniert. aber wenn das der Fall ist, benutze NSScreen , um die Bildschirmkoordinaten zu erhalten, rechne und zentriere das Fenster direkt.

    
CRD 15.04.2011 21:58
quelle
3
%Vor%     
Klaas 01.04.2016 16:21
quelle
0

Schnelle Version: Man kann eine einfache statische Dienstprogrammfunktion für das gleiche schreiben

%Vor%     
SourabhV 26.10.2015 04:29
quelle

Tags und Links