So implementieren Sie HUD-Stil Fenster wie Adressbuch "Show in Large Type"

8

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?

    
amrox 15.12.2010, 05:05
quelle

2 Antworten

22

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.

%Vor%

Der Alpha-Wert macht das Fenster halbtransparent.

Sie können auch eine benutzerdefinierte Unterklasse NSView erstellen, die ein rundes Rechteck zeichnet:

%Vor%

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.

    
NSGod 15.12.2010, 05:58
quelle
3

Vielen Dank für die Freigabe dieses Codes. Hat mir viel geholfen! Sie können die folgende Zeile hinzufügen ...

%Vor%

zur Init-Funktion des Fensters. Dies entfernt die weißen Ecken.

    
JLinX 08.11.2012 20:20
quelle

Tags und Links