web-dev-qa-db-fra.com

Xcode & Swift - Fenêtre sans barre de titre mais avec des boutons de fermeture, de réduction et de redimensionnement

J'utilise actuellement Swift dans Xcode 6, Beta 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 "Titre unifié et barre d'outils "dans l'inspecteur d'attributs sur une fenêtre, rien ne se passe visiblement. J'ai déjà laissé le titre.
Lorsqu'aucun titre n'est entré, la barre de titre sera toujours reconnaissable en raison de la ligne de bordure et de la différence d'arrière-plan avec le reste de la fenêtre, la séparant du contenu réel.


Un excellent exemple serait l'application Yosemite actuelle, OS X 10.10, Notes. Aucune barre de titre n'est visible ou distinguable, juste les boutons Fermer, Réduire et Redimensionner comme on le voit ici. Screenshot of Notes window

J'ai cherché et visité d'autres postes, mais en vain.
Ceux qui ont mentionné masquer complètement la barre de titre, mais je ne saurais pas comment ajouter manuellement les boutons Fermer, Réduire et Redimensionner correctement, ce qui signifie qu'ils auraient l'air corrects, pas réels, remplacements et connexions d'images sournoises avec les fonctions Fermer, Réduire et Redimensionner de la barre de menus.

37
Isaiah

Si vous utilisez le storyboard, il s'agit simplement d'une simple case à cocher dans la barre d'inspection.

  1. Sélectionnez la fenêtre de Story Board enter image description here

  2. Cochez la case Barre de titre transparente dans la fenêtre d'inspection.

enter image description here

Voici à quoi cela ressemble dans le Storyboard. Il se présente de la même manière lorsque vous générez et exécutez l'application.

enter image description here

5
Fangming

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 version

44
Renfei Song

Pour 10.10+, vous pouvez les utiliser:

window.titlebarAppearsTransparent = true
window.movableByWindowBackground  = true

Il y avait un exemple de projet officiel pour l'apparence des fenêtres à Yosemite. Vous voudrez peut-être le vérifier.

18
Cai

Pour Swift 3: -

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

Vous pouvez les utiliser:

override func viewDidAppear() {
    super.viewDidAppear()

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

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)
}
4
Andrej Jurkin

Je n'ai pas assez de réputation pour commenter la réponse de Ranfei Songs, mais sous OSX 10.12, la syntaxe du titleVisibility est légèrement différente, au lieu de cela:

self.window.titleVisibility = NSWindowTitleVisibility.Hidden;

vous devrez utiliser NSWindowTitleHidden à la place, donc la mise à jour du code de Ranfei vous obligerait à spécifier ceci comme ceci:

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