swift - reducir - ocultar iconos de la barra de estado android
cómo ocultar la barra de estado y la barra de navegación cuando toca el dispositivo (2)
Con Swift 4 y iOS 11, según sus necesidades, puede seleccionar uno de los tres fragmentos de código siguientes para resolver su problema.
# 1. Uso de la propiedad de UINavigationController hidesBarsOnTap + UIViewController prefersStatusBarHidden y preferredStatusBarUpdateAnimation properties
Desde iOS 8, UINavigationController tiene una propiedad hidesBarsOnTap . hidesBarsOnTap tiene la siguiente declaration :
var hidesBarsOnTap: Bool { get set }
Un valor booleano que indica si el controlador de navegación permite ocultar sus barras mediante un gesto de toque.
Apple también dice acerca de hidesBarsOnTap :
Cuando el valor de esta propiedad es
true, el controlador de navegación alterna la ocultación y la visualización de su barra de navegación y barra de herramientas en respuesta a un toque no manejado en el área de contenido. El valor predeterminado de esta propiedad esfalse.
El siguiente código muestra cómo implementar hidesBarsOnTap :
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.hidesBarsOnTap = true
}
override var prefersStatusBarHidden: Bool {
return navigationController?.isNavigationBarHidden == true
}
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
return UIStatusBarAnimation.slide
}
}
# 2. Usando UINavigationController setNavigationBarHidden(_:animated:) method + UIViewController prefersStatusBarHidden y preferredStatusBarUpdateAnimation propiedades con un UIButton
UINavigationController tiene un método llamado setNavigationBarHidden(_:animated:) . setNavigationBarHidden(_:animated:) tiene la siguiente declaration :
func setNavigationBarHidden(_ hidden: Bool, animated: Bool)
Establece si la barra de navegación está oculta.
El siguiente código muestra cómo alternar la barra de estado y la barra de navegación usando setNavigationBarHidden(_:animated:) con un UIButton establecido en el Guión gráfico y vinculado a una @IBAction :
import UIKit
class ViewController: UIViewController {
// Link this @IBAction to a `UIButton`
@IBAction func toggle(_ sender: UIButton) {
navigationController?.setNavigationBarHidden(navigationController?.isNavigationBarHidden == false, animated: true)
}
override var prefersStatusBarHidden: Bool {
return navigationController?.isNavigationBarHidden == true
}
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
return UIStatusBarAnimation.slide
}
}
# 3. Usando UINavigationController setNavigationBarHidden(_:animated:) method + UIViewController prefersStatusBarHidden y preferredStatusBarUpdateAnimation propiedades con un UIGestureRecognizer
Como alternativa al código anterior, puede usar setNavigationBarHidden(_:animated:) con un UIGestureRecognizer lugar de un UIButton :
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let gesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.toggle))
view.isUserInteractionEnabled = true
view.addGestureRecognizer(gesture)
}
@objc func toggle() {
navigationController?.setNavigationBarHidden(navigationController?.isNavigationBarHidden == false, animated: true)
}
override var prefersStatusBarHidden: Bool {
return navigationController?.isNavigationBarHidden == true
}
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
return UIStatusBarAnimation.slide
}
}
Vea esta respuesta para una pregunta similar si necesita apuntar a iOS 10.
¿Cómo ocultar la barra de estado y la barra de navegación cuando toco el dispositivo como fotos en el iPhone? Yo habia usado
UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.Slide)
pero no está funcionando
Edición : me gustaría ocultar y mostrar la barra de estado y la barra de navegación, no ocultarla permanentemente.
En iOS 8 y superior, simplemente puedes usar hidesBarsOnTap :
navigationController?.hidesBarsOnTap = true