Xcode & Swift - fenêtre sans barre de titre mais avec les boutons fermer, minimiser et redimensionner

J'utilise actuellement Swift dans Xcode 6, bêta 5. J'essaie de supprimer la barre de titre, ou toute différence visible entre la barre de titre et le contenu réel. Si j'active "Unified title and toolbar" dans L'Inspecteur des attributs sur une fenêtre, rien ne se produit visiblement. J'ai déjà laissé le titre.

Quand aucun titre n'est entré, la barre de titre sera encore distinguable en raison de la ligne de bordure et de la différence de fond avec le reste de la fenêtre, en le séparant de la contenu réel.



Un excellent exemple serait le Yosemite actuel, OS X 10.10, Notes app. Aucune barre de titre n'est visible ou distinguable, juste les boutons Fermer, minimiser et redimensionner comme ici. Screenshot of Notes window

j'ai cherché et visité d'autres postes, mais sans grand effet.

Ceux qui ont mentionné cacher la barre de titre tout à fait, mais je ne saurais pas comment ré-ajouter manuellement les boutons Fermer, minimiser et redimensionner correctement, ce qui signifie qu'ils seraient corrects, aucun remplacement d'image réel et sournois et les connexions avec la barre de menu Fermer, minimiser et redimensionner les fonctions.

34
demandé sur Vadim Kotov 2014-08-11 23:20:14

6 réponses

le nouveau masque de style de fenêtre NSFullSizeContentViewWindowMask ajouté dans OS X 10.10 fera l'affaire.

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

Notes De Mise À Jour

41
répondu Renfei Song 2015-08-21 08:15:53

Pour de 10,10+, vous pouvez utiliser ces:

window.titlebarAppearsTransparent = true
window.movableByWindowBackground  = true

Il y avait un projet d'échantillon officiel pour l'apparition de fenêtres à Yosemite. Vous pourriez envie de le vérifier.

18
répondu Cai 2014-09-04 00:23:41

Pour Swift 3: -

self.window.titleVisibility = .hidden
self.window.titlebarAppearsTransparent = true
self.window.styleMask.insert(.fullSizeContentView)
15
répondu Jay Mehta 2017-02-17 19:14:58

Vous pouvez utiliser ces:

override func viewDidAppear() {
    super.viewDidAppear()

    self.view.window?.titlebarAppearsTransparent = true
    self.view.window?.movableByWindowBackground = true
}
11
répondu Hossein 2015-01-15 15:51:05

Mise À Jour Sept. 2017, taget 10.11:

override func viewDidAppear() {
    super.viewDidAppear()

    self.view.window?.titleVisibility = .hidden
    self.view.window?.titlebarAppearsTransparent = true
    self.view.window?.styleMask.insert(.fullSizeContentView)
}
2
répondu Andrej Jurkin 2017-09-02 10:50:06

Je n'ai pas assez de réputation pour commenter la réponse des chansons de Ranfei, mais en tournant sur OSX 10.12 la syntaxe pour la visibilité des titres est légèrement différente, au lieu de ceci:

self.window.titleVisibility = NSWindowTitleVisibility.Hidden;

vous devrez utiliser NSWindowTitleHidden à la place, donc mettre à jour le code de Ranfei vous obligera à spécifier ceci comme ceci:

self.window.titleVisibility = NSWindowTitleHidden;
self.window.titlebarAppearsTransparent = YES;
self.window.styleMask |= NSFullSizeContentViewWindowMask;
1
répondu Jeff U. 2017-01-05 20:37:12