Wie ändere ich die Höhe einer NSWindow Titelleiste?

8

Ich möchte die Höhe einer NSWindow Titelleiste ändern.

Hier sind einige Beispiele:

Und ...

Ich könnte eine NSToolbar verwenden, aber das Problem ist, dass ich Ansichten nicht sehr hoch platzieren kann (Beispiel: Ich kann das segmentierte Steuerelement nicht höher platzieren als im Bild, da immer noch die Titelleiste vorhanden ist)

Wenn ich die Titelleiste entferne, kann ich keine NSToolbar platzieren und das Fenster ist nicht beweglich.

Haben Sie irgendwelche Ideen?

    
Flocked 09.01.2011, 12:56
quelle

4 Antworten

4

INAppStoreWindow ist eine NSWindow-Unterklasse, die Ihnen sagt, wie Sie die Höhe der Titelleiste ändern können.

Ссылка

Ссылка
In diesem Beispiel erfahren Sie, wie Sie Schaltflächen in der Titelleiste hinzufügen.

    
damo 26.04.2011, 13:48
quelle
23

Das ist viel einfacher als man denken würde. Ich bin auch auf die Suche nach etwas ähnlichem für meine App gegangen.

Echte App Store-App:

Meine App Store-App sieht ähnlich aus:

Kein Respekt vor INAppStoreWindow, es ist eine sehr gute Implementierung und solide. Der einzige Nachteil, den ich daraus ziehen konnte, war, dass es viel Zeichnungscode mit fest codierten Einstellungen für die TitleBar-Farben gab, die Apple jederzeit anpassen kann.

Also hier ist, wie ich es gemacht habe:

A) Erstellen Sie ein Standardfenster mit einer Titelleiste, Schließen, Minimieren, Schatten, Größe ändern, Vollbild - Primäres Fenster alle gesetzt. Hinweis: Sie benötigen weder ein strukturiertes Fenster noch sollten Sie einen Titel festlegen

B) Fügen Sie als nächstes eine Standardsymbolleiste mit diesen Einstellungen hinzu:

  • Nur Symbol
  • Sichtbar beim Start - EIN
  • Anpassbar - AUS
  • Trennzeichen - EIN
  • Größe - Regulär

Entfernen Sie alle Toolbar-Elemente und fügen Sie nur diese in der folgenden Reihenfolge hinzu

NSSegmentControl (51 x 24) - | Flexibler Raum | - NSSearchField (150 x 25)

C) Fügen Sie in Ihrer Inhaltsansicht direkt unter der Symbolleiste einen NSButton-Satz in Normalgröße wie folgt hinzu:

  • Umrandet - AUS
  • Transparent - AUS
  • Titel -
  • Bild -
  • Position - Text unterhalb der Schaltfläche
  • Schriftart - System Small 11

Ok, ziemlich einfach, oder?!

In Ihrem Window Controller oder App-Delegat .... Richten Sie IBOutlet (s) zu Ihren NSButton (s) ein

Hinweis: Denken Sie daran, Ihr IBOutlet im Interface Builder

zu verbinden

Ok, hab keine Angst, wir müssen jetzt ein bisschen Code schreiben:

In watchFromNib oder windowDidLoad ....

  1. Erhalten Sie die Superview der Inhaltsansichten (alias NSThemeView)
  2. Entfernen Sie Ihre Schaltfläche von ihrem superView
  3. Legen Sie den Rahmen Ihrer Schaltfläche fest
  4. Fügen Sie die Schaltfläche zurück zur Themenansicht hinzu

Der Code würde also ähnlich aussehen:

%Vor%

Das ist es! Sie können Ihre Steckdose verwenden, um Ihre Taste zu aktivieren / deaktivieren, ein Maskenbild zu erstellen, wenn Sie ausgewählt sind, die Symbolleiste zu aktivieren / deaktivieren oder sogar alles auszublenden und einen Fenstertitel hinzuzufügen. All dies macht keine Sorgen, wenn Apple ihre Standard-Window Titlebars ändert.

P.S. In diesem Posting wurden keinerlei private Frameworks verwendet!

    
Arvin 25.09.2012 02:01
quelle
4

Sie müssten NSWindow ableiten und eine benutzerdefinierte Fensterrahmenzeichnung erstellen. Es geht nicht nur um eine Titelleiste. Es handelt sich um den gesamten Fensterrahmen (Sie können also, wenn Sie möchten, die Knöpfe zum Schließen / Minimieren / Zoomen ganz unten einfügen).

Ein guter Anfang ist bei "Cocoa with love" Website .

    
Eimantas 09.01.2011 13:56
quelle
1

Es gibt ein paar neue Lösungen basierend auf INAppStoreWindow und ohne Warnung und Log-Nachricht, für jeden, der die Höhe von NStetitbar ändern möchte, die Position der Ampel ändern, ein Element (zB einen NSbutton) auf NStellebar hinzufügen und ändern möchte Position, überprüfen Sie bitte unten.

WAYWindow: Ссылка

NStitlebar_with_item: Ссылка

    
bo zhang 15.01.2017 16:33
quelle

Tags und Links