Mehrere Apps, einschließlich des integrierten Adressbuchs, verwenden ein halbtransparentes HUD-Fenster mit großem schattierten Text. Ich möchte ein ähnliches Fenster in meiner Cocoa Mac App implementieren.
Gibt es irgendwo eine freie Implementierung eines solchen Fensters?
Wenn nicht, was ist der beste Weg, es zu implementieren?
Hier ist ein Beispielprojekt, das zeigt, wie es geht:
Grundsätzlich müssen Sie eine randlose NSWindow
Unterklasse erstellen. Der einfachste Weg, dies zu tun, ist, Ihre Fenstergröße und -anordnung in der NIB-Datei festzulegen und dann ihre Klasse als benutzerdefinierte Unterklasse festzulegen. Während es im Interface Builder immer noch wie ein normales Fenster aussieht, erscheint es zur Laufzeit so, wie Sie es benötigen.
Der Alpha-Wert macht das Fenster halbtransparent.
Sie können auch eine benutzerdefinierte Unterklasse NSView
erstellen, die ein rundes Rechteck zeichnet:
Wie beim Fenster legen Sie einfach die Klasse der Inhaltsansicht des Fensters als benutzerdefinierte NSView
-Unterklasse fest. (Verwenden Sie den Gliederungsansichtsmodus, und klicken Sie auf das Dreiecksymbol, um das verschachtelte NSView
im Symbol des Fensters in der NIB-Datei anzuzeigen). Auch wenn die Ansicht im Interface Builder normal aussieht, wird sie zur Laufzeit gut aussehen.
Platziere dann einfach einen NSTextField
über der Ansicht und setze den Text entsprechend.
Beachten Sie, dass die Arbeit mit randlosen Fenstern im Allgemeinen nicht einfach ist (wenn Sie z. B. das Fenster ziehen möchten, müssen Sie diese Funktionalität selbst hinzufügen). Apple hat einen Beispielcode, der das Ziehen zum Beispiel erlaubt.