ios - programar - swift tutorial español
¿Cómo escondo la barra de estado en una aplicación Swift para iOS? (21)
Me gustaría eliminar la barra de estado en la parte superior de la pantalla.
Esto no funciona:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
application.statusBarHidden = true
return true
}
También lo intenté:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
var controller = UIViewController()
application.statusBarHidden = true
controller.setNeedsStatusBarAppearanceUpdate()
var view = UIView(frame: CGRectMake(0, 0, 320, 568))
view.backgroundColor = UIColor.redColor()
controller.view = view
var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
label.center = CGPointMake(160, 284)
label.textAlignment = NSTextAlignment.Center
label.text = "Hello World"
controller.view.addSubview(label)
self.window!.rootViewController = controller
self.window!.makeKeyAndVisible()
return true
}
- Ir al archivo Info.plist
- Desplácese sobre una de esas líneas y aparecerá un botón (+) y (-).
- Haga clic en el botón más para agregar una nueva clave Escriba en comenzar con mayúscula V y automáticamente la primera opción será Ver la apariencia de la barra de estado basada en el controlador.
- Agregue eso como la CLAVE.
- Establezca el VALOR en "NO"
- Ir a usted AppDelegate.swift
Agregue el código, dentro del método
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool { application.statusBarHidden = true return true }
¡HECHO! ¡Ejecuta tu aplicación y no más barra de estado!
Actualización para iOS 10 / Swift 3.0
Ya no es una función, ahora es una propiedad ...
override var prefersStatusBarHidden: Bool {
return true
}
De acuerdo, entonces esto se convierte en un problema para mí, ya que iOS 9 no admite ninguno sobre el método que las personas han mencionado aquí, como UIApplication.sharedApplication().statusBarHidden = true
o
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
y
override func prefersStatusBarHidden() -> Bool {
return true
}
funciona pero no proporciona una solución programable donde pueda cambiar con una condición. ( statusBarHidden = true
y statusBarHidden = false
como lo hemos hecho antes).
Solución a esta locura:
Al agregar a prefersStatusBarHidden()
como a continuación, puede controlar mediante programación el ocultar y mostrar la barra de estado sin agregar la configuración UIViewControllerBasedStatusBarAppearance
a su info.plist :
var showStatusBar = true
override func prefersStatusBarHidden() -> Bool {
if showStatusBar {
return false
}
return true
}
private func showStatusBar(enabled: Bool) {
showStatusBar = enabled
prefersStatusBarHidden()
}
luego úsalo así a través de tu código:
//Hide Status Bar
showStatusBar(false)
O
//Show Status Bar
showStatusBar(true)
De hecho, me di cuenta de esto. Agregaré mi solución como otra opción.
extension UIViewController {
func prefersStatusBarHidden() -> Bool {
return true
}
}
Deberías implementar prefersStatusBarHidden en tu (s) controlador (es) de vista:
veloz 2
override func prefersStatusBarHidden() -> Bool {
return true
}
Swift 3 y más tarde
override var prefersStatusBarHidden: Bool {
return true
}
En mi caso, estaba buscando la barra de estado para ocultar / mostrar bajo demanda; en lugar de solo cuando la vista se carga o desaparece.
veloz 3.x
//show status bar initially
var showStatusBar = true
//set the parameters
override var prefersStatusBarHidden: Bool {
if showStatusBar == true {
//does not prefer status bar hidden
print("does not prefer status bar hidden")
return false
} else {
//does prefer status bar hidden
print("does prefer status bar hidden")
return true
}
}
//ex: hide status bar and call parameter function again whenever you want
showStatusBar = false
setNeedsStatusBarAppearanceUpdate()
En su Proyecto-> General-> Información de implementación
Estilo de barra de estado: -
acaba de marcar Ocultar barra de estado (iOS 10)
Estoy usando Xcode 8.1 (8B62) con un objetivo de despliegue establecido en 10.1 y no he tenido mucha suerte con las opciones de anulación mencionadas anteriormente. Sin embargo, consultar la opción "Ocultar barra de estado" en Información de implementación me fue muy útil.
Espero que esto ayude.
Por lo tanto, el problema aquí en realidad no tiene nada que ver con Swift, sino cómo se maneja la apariencia de la barra de estado desde iOS 7.
Por defecto, los controladores de vista controlan individualmente la apariencia de la barra de estado cuando están en la pantalla. Si desea utilizar este método para controlar la barra de estado, puede anular los siguientes métodos para los controles de vista a los que desee modificar la apariencia:
prefersStatusBarHidden
, preferredStatusBarStyle
, preferredStatusBarAnimation
,
En su caso, simplemente implementará prefersStatusBarHidden
y devolverá true
.
La otra forma sería controlar la apariencia de la barra de estado en el nivel de la aplicación. Esto parece ser lo que realmente intentas hacer (configurando application.statusBarHidden
).
Para que esto funcione, debe abrir el archivo Info.plist
su aplicación y agregar la clave UIViewControllerBasedStatusBarAppearance
, y darle un valor NO
.
Puede usar este código en el scope
su Class
ViewController
open override var prefersStatusBarHidden: Bool { return true }
Si desea ocultar y recuperar la barra de estado en el botón , puede usar este método:
Para ocultar la barra de estado: -
UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelStatusBar
Para traer de vuelta la barra de estado: -
UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelNormal
Solo para agregar, cuando la anulación prefersStatusBarHidden
método o variable de prefersStatusBarHidden
, la View controller-based status bar appearance
en Info.plist debe ser SÍ; de lo contrario, la anulación no tendrá efecto
Swift 4
//MARK:- Show Status Bar
UIApplication.shared.isStatusBarHidden = true
//MARK:- Hide Status Bar
UIApplication.shared.isStatusBarHidden = false
Una solución que funciona para mí; si desea ocultar la barra de estado en un controlador de vista específico durante la carga:
import UIKit
class ViewController: UIViewController {
private var hideStatusBar: Bool = false
override var prefersStatusBarHidden: Bool {
return hideStatusBar
}
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
return UIStatusBarAnimation.slide
}
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundcolor = .white
hideStatusBar = true
UIView.animate(withDuration: 0.3) {
self.setNeedsStatusBarAppearanceUpdate()
}
}
Atención: si configura la clave " Ver apariencia de la barra de estado basada en el controlador " en " NO " en su info.plist, el código anterior no funciona. Debe establecer la clave en " SÍ " o eliminarla de info.plist
en Swift 3.x:
override func viewWillAppear(_ animated: Bool) {
UIApplication.shared.isStatusBarHidden = true
}
Swift 3
En Info.plist
establece View controller-based status bar appearance
a NO
Y llama a UIApplication.shared.isStatusBarHidden = true
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(true);
navigationController?.navigationBar.hidden = true // for navigation bar hide
UIApplication.sharedApplication().statusBarHidden=true; // for status bar hide
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.isStatusBarHidden = true
return true
}
self.navigationController?.isNavigationBarHidden = true