wake-up-neo.com

Xcode & Swift - Fenster ohne Titelleiste, aber mit Schaltflächen zum Schließen, Minimieren und Ändern der Größe

Ich verwende momentan Swift in Xcode 6, Beta 5. Ich versuche, die Titelleiste oder einen sichtbaren Unterschied zwischen der Titelleiste und dem tatsächlichen Inhalt zu entfernen. Wenn ich "Einheitlicher Titel und" aktiviere Symbolleiste "im Attribut-Inspektor eines Fensters passiert nichts sichtbar. Ich habe den Titel bereits weggelassen.
Wenn kein Titel eingegeben wird, ist die Titelleiste immer noch unterscheidbar, da sich die Rahmenlinie und der Hintergrund vom Rest des Fensters unterscheiden und vom eigentlichen Inhalt trennen.


Ein hervorragendes Beispiel wäre die aktuelle Yosemite, OS X 10.10, Notes App. Es ist keine Titelleiste sichtbar oder unterscheidbar, nur die hier gezeigten Schaltflächen Schließen, Minimieren und Größe ändern. Screenshot of Notes window

Ich habe andere Beiträge gesucht und besucht, aber ohne Erfolg.
Diejenigen, die erwähnt haben, dass sie die Titelleiste komplett ausblenden, aber ich würde nicht wissen, wie man die Schaltflächen Schließen, Minimieren und Größe ändern manuell neu hinzufügt richtig, was bedeutet, dass sie korrekt aussehen würden, keine tatsächlichen, hinterhältige Bildersetzungen und Verbindungen mit den Funktionen Schließen, Minimieren und Größe ändern.

37
Isaiah

Wenn Sie ein Storyboard verwenden, ist dies nur ein einfaches Kontrollkästchen in der Informationsleiste.

  1. Wählen Sie das Fenster aus Storyboard enter image description here

  2. Aktivieren Sie das Kontrollkästchen Transparente Titelleiste im Inspektorfenster.

enter image description here

So sieht es im Storyboard aus. Es sieht genauso aus, wenn Sie die Anwendung erstellen und ausführen.

enter image description here

5
Fangming

Die neue Fenstermaske NSFullSizeContentViewWindowMask, die in OS X 10.10 hinzugefügt wurde, macht den Trick.

self.window.titleVisibility = NSWindowTitleVisibility.Hidden;
self.window.titlebarAppearsTransparent = YES;
self.window.styleMask |= NSFullSizeContentViewWindowMask;

Versionshinweise

44
Renfei Song

Für 10.10+ können Sie diese verwenden:

window.titlebarAppearsTransparent = true
window.movableByWindowBackground  = true

In Yosemite gab es ein offizielles Musterprojekt für das Erscheinen von Fenstern. Vielleicht möchten Sie es überprüfen.

18
Cai

Für Swift 3: -

self.window.titleVisibility = .hidden
self.window.titlebarAppearsTransparent = true
self.window.styleMask.insert(.fullSizeContentView)
16
Jay Mehta

Sie können diese verwenden:

override func viewDidAppear() {
    super.viewDidAppear()

    self.view.window?.titlebarAppearsTransparent = true
    self.view.window?.movableByWindowBackground = true
}
11
Hossein

pdate Sept. 2017, Tag 10.11:

override func viewDidAppear() {
    super.viewDidAppear()

    self.view.window?.titleVisibility = .hidden
    self.view.window?.titlebarAppearsTransparent = true
    self.view.window?.styleMask.insert(.fullSizeContentView)
}
4
Andrej Jurkin

Ich habe nicht genug Reputation, um die Antwort von Ranfei Songs zu kommentieren, aber unter OSX 10.12 ist die Syntax für titleVisibility etwas anders:

self.window.titleVisibility = NSWindowTitleVisibility.Hidden;

sie müssen stattdessen NSWindowTitleHidden verwenden. Wenn Sie also Ranfeis Code aktualisieren, müssen Sie Folgendes angeben:

self.window.titleVisibility = NSWindowTitleHidden;
self.window.titlebarAppearsTransparent = YES;
self.window.styleMask |= NSFullSizeContentViewWindowMask;
1
Jeff U.