tutorial programar para libro español desde descargar cero aprender apple ios iphone ios7 swift

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 }


  1. Ir al archivo Info.plist
  2. Desplácese sobre una de esas líneas y aparecerá un botón (+) y (-).
  3. 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.
  4. Agregue eso como la CLAVE.
  5. Establezca el VALOR en "NO"
  6. Ir a usted AppDelegate.swift
  7. 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.

Proyecto> General

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 " " o eliminarla de info.plist


en Swift 3.x:

override func viewWillAppear(_ animated: Bool) { UIApplication.shared.isStatusBarHidden = true }


si prefieres un enfoque visual en lugar de codificarlo, utiliza este método: en tu info.plist

simplemente agregue View controller-based status bar appearance a NO

y la Status bar is initially hidden como YES


Swift 3

En Info.plist establece View controller-based status bar appearance a NO

Y llama a UIApplication.shared.isStatusBarHidden = true


Ve a tu Info.plist y agrega dos llaves:


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