Je Je vais vous donner une réponse en fonction des commentaires que vous avez écrits sur votre intention avec cette question.
Solution
Vous pouvez obtenir la barre d'état à disparaître lors de l'ouverture de la barre latérale (similaire à l'application Slack) en remplaçant la méthode prefersStatusBarHidden
de UIViewController
pour la barre latérale. Il devrait être quelque chose comme ce qui suit:
override func prefersStatusBarHidden() -> Bool {
return true
}
Vous pouvez également modifier l'apparence de cela avec les deux méthodes: preferredStatusBarStyle
et preferredStatusBarUpdateAnimation
Exemple
Je l'ai fait une projet simple pour illustrer cela. Il est possible d'implémenter une barre latérale de différentes manières, donc j'ai basé cet exemple sur un popover. Votre implémentation dépendra de la manière dont vous avez implémenté la barre latérale.
J'ai fait un storyboard simple avec deux UIViewController
et un UIButton
dans chacun. En cliquant sur le premier UIButton
, il déclenchera un segment avec le type Present As Popover
qui montrera le deuxième contrôleur.
Le premier UIViewController
n'a aucun code (tout est fait dans le storyboard), mais le second UIViewController
a le code pour cacher la barre d'état.
J'ai joint une capture d'écran du storyboard et le code pour la seconde UIViewController
ci-dessous.
//
// PopController.swift
// SidebarHideStatus
//
// Created by Stefan Veis Pennerup on 31/01/16.
// Copyright © 2016 Kumuluzz. All rights reserved.
//
import UIKit
class PopController: UIViewController {
// MARK: - Storyboard actions
@IBAction func backButtonPressed(sender: UIButton) {
dismissViewControllerAnimated(true, completion: nil)
}
// MARK: - Status bar
override func prefersStatusBarHidden() -> Bool {
return true
}
}
MISE À JOUR 1: OP utilise un UIView
au lieu d'un UIViewController
pour la barre latérale. Tout d'abord, je vous recommande de factoriser votre sidebar dans un UIViewController
séparé car il le rendra beaucoup plus réutilisable dans le futur, mais c'est une discussion complètement différente qui pourrait durer des jours! Pour masquer la barre d'état, vous devez toujours utiliser la méthode de rappel que j'ai mise en surbrillance auparavant, mais vous devez simplement appeler la méthode setNeedsStatusBarAppearanceUpdate
pour la mettre à jour manuellement.
J'ai mis à jour le UIViewController
initial avec le code suivant et supprimé le segue afin de démontrer cette approche.
//
// ViewController.swift
// SidebarHideStatus
//
// Created by Stefan Veis Pennerup on 31/01/16.
// Copyright © 2016 Kumuluzz. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
// MARK: - Properties
private var isSidebarShown = false
// MARK: - Storyboard outlets
@IBAction func buttonPressed(sender: UIButton) {
isSidebarShown = !isSidebarShown
setNeedsStatusBarAppearanceUpdate()
}
// MARK: - Status bar
override func prefersStatusBarHidden() -> Bool {
return isSidebarShown
}
override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation {
// NOTE: This method has no effect now when
// using the method setNeedsStatusBarAppearanceUpdate()
return .Slide
}
}
Je dois changer le cadre de la barre d'état et [ce] (https://github.com/ndesai/InstagramStatusBarTest/blob/master/InstagramStatusBarTest/ViewController.m) est la seule façon que je l'ai trouvé en ligne, et il me donne un objet immuable. Où puis-je accéder au cadre de la barre d'état modifiable? – Jay
Le rectangle du cadre définissant la zone de la barre d'état. (lecture seule) https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/occ/instp/UIApplication/statusBarFrame –
@LeoDabus, ce qui implique que le statut les cadres de barre ne peuvent pas être manipulés dans swift, mais ils peuvent dans Obj-c? – Jay