Mi aplicación actual que se ejecuta en iOS 5 y 6.

La barra de navegación está teniendo un color anaranjado y la barra de estado está teniendo un color de fondo negro con texto blanco de color. Sin embargo, al ejecutar la misma aplicación en iOS 7, me observe la barra de estado se ve transparente con el mismo fondo de color naranja como el color de la barra de navegación y la barra de estado el color del texto es negro.

Debido a esto no soy capaz de diferenciar entre la barra de estado y la barra de navegación.

¿Cómo puedo hacer que la barra de estado para buscar el mismo que en iOS 5 y 6, que es con el color de fondo negro y texto blanco color? ¿Cómo puedo hacer esto mediante programación?

21 Comentarios

  1. 170

    Tuve que tratar de buscar otras maneras. Que no implica addSubview en la ventana. Porque me voy a mover hasta la ventana cuando el teclado se presenta.

    Objective-C

    - (void)setStatusBarBackgroundColor:(UIColor *)color {
    
        UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
    
        if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
            statusBar.backgroundColor = color;
        }
    }

    Swift

    func setStatusBarBackgroundColor(color: UIColor) {
    
        guard  let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else {
            return
        }
    
        statusBar.backgroundColor = color
    }

    Swift 3

    func setStatusBarBackgroundColor(color: UIColor) {
    
        guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }
    
        statusBar.backgroundColor = color
    }

    La llamada de esta forma application:didFinishLaunchingWithOptions trabajó para mí.

    N. B. Tenemos una app en la app store con esta lógica. Así que supongo que está bien con la aplicación de la directiva de la tienda.


    Edición:

    Utilice a su propio riesgo. Forma el comentarista de @Sebyddd

    Tuve una aplicación rechazado a causa de esto, mientras que otra fue aceptado
    bien. De hecho consideran que es privado el uso de la API, por lo que están sujetos a
    suerte durante el proceso de revisión 🙂 – Sebyddd

    • A diferencia de la aceptación de la solución, esto también funciona al cambiar la orientación. Gracias!
    • Funciona a la perfección para mí, y la solución más fácil.
    • No es que los privados el uso de la API?
    • Tuve una aplicación rechazado a causa de esto, mientras que otro fue aceptado muy bien. De hecho consideran que es privado el uso de la API, por lo que están sujetos a la suerte durante el proceso de revisión 🙂
    • Que es una mala noticia. Supongo que tuve la suerte de todo el tiempo. Podría usted compartir con nosotros el error de la app store equipo de revisión ha enviado a vosotros. Hizo usted necesita para lidiar con el teclado? ¿Qué alternativas de enfoque de la hiciste? También he añadido ur comentario en la respuesta para que la gente fácilmente se notan. Gracias por compartir.
    • El mensaje es bastante general y no ayuda mucho. He publicado a continuación. En mi caso el teclado no era un problema. Terminé el deslizamiento de una vista por debajo de la barra de estado en la ventana de nivel (algo similar a lo que @shahid-iqbal hizo en su respuesta). «Hemos encontrado que la aplicación utiliza uno o más no-Api públicas, que no está en conformidad con la App Store de Revisión de las Directrices. El uso de la no-pública de la Api no es permisible, porque puede conducir a una mala experiencia de usuario en caso de que estas Api de cambio».
    • Me esperaba más la forma de apple, como.. no queremos que la barra de estado bg cambiado.. o si u desea cambiar bg hacer esto.. 🙁 .. de todos modos.. gracias por la info @Sebyddd
    • Una de las mejores respuestas en el sitio, gracias @WarifAkhandRishi. Me puse en una respuesta larga basado en el tuyo, el que puede salvar a la gente a escribir.
    • Esta respuesta es super cool! Yo estaba buscando una manera de ocultar o modificar la Barra de Estado en simulador de iTunes Connect promo pantallas. Con acceso directo a la barra me puede personalizar en cualquier forma.
    • envió una recompensa para daros las gracias por la gran respuesta
    • Hay un problema con esta solución, cuando se pulse dos veces el botón de inicio, este estado la barra de estado de color desaparecerán.
    • Barra de estado está oculto en el iOS si usted doble de prensa. Así que el color de fondo desaparece.
    • Así que tal vez sea mejor cambiar la interfaz de usuario backgroundColor por la vista de la barra de estado posición , ni la barra de estado que está UIWindow controlado por el sistema operativo cuando se pulse dos veces el botón de inicio. Como la respuesta(stackoverflow.com/questions/47250495/…), o de otra respuesta en esta página.
    • Hay un problema con esta solución, cuando recibes una notificación, la barra de estado desaparece demasiado
    • No funciona en iOS 13. App llamada -barra de estado o -statusBarWindow en UIApplication: este código debe ser cambiado como ya no hay una barra de estado o barra de estado de la ventana. El uso de la statusBarManager objeto en la ventana de la escena en su lugar.

  2. 106

    Goto su aplicación info.plist

    1) Establecer View controller-based status bar appearance a NO

    2) Establecer Status bar style a UIStatusBarStyleLightContent

    Entonces Goto delegado de la aplicación y pegue el siguiente código donde puede configurar su Windows RootViewController.

    #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
    
    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
    {
        UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, 20)];
        view.backgroundColor=[UIColor blackColor];
        [self.window.rootViewController.view addSubview:view];
    }

    Espero que ayude.

    • Acaba de mencionar, apple docs recomendar esta si el cheque en su lugar: si (NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_6_1){} else {} saludos!
    • Este es ridículamente difícil de averiguar, gracias por proporcionar la evasiva respuesta.
    • En la info.plist no veo cómo Set Status bar style to UIStatusBarStyleLightContent. O es que no debo esperar sugerencias? También es el valor de tipo Cadena de caracteres?
    • También, dentro de la cual delegado método hago si el bloque?
    • Ir a info.plist y, a continuación, seleccione cualquiera de las filas. Usted verá un signo+. Haga clic en el signo Más y desde desplegable, usted debe ver Status bar style Opción. Selecciónelo. Y pegar UIStatusBarStyleLightContent como su valor.
    • Estoy hablando de la aplicación AppDelegate Clase. Cada aplicación tiene una clase AppDelegate.
    • Entiendo eso, pero que method? Simplemente mostrar una si-bloque. En el método que hago si el bloque? El delegado tiene un número de métodos. De todos modos, esa fue la pregunta. Pero me lo imaginé. Gracias por responder. y +1 por la ayuda. El método es didFinishLaunchingWithOptions
    • Esto no cuenta para la rotación
    • La adición de la subvista fue la única solución que funcionó para mí cuando se utiliza una costumbre UINavigationBar en iOS 7 y 8. Gracias.
    • Su mejor uso UIScreen ancho: UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 20)];
    • También considerar el estado de la barra de estar de 40 píxeles cuando el teléfono está en la llamada o la inmovilización de los modos.
    • Más sucinta manera de establecer el marco es el uso de UIApplication.sharedApplication().statusBarFrame
    • Asegúrese de llamar después de la configuración de rootViewController.
    • ¿por qué no puedes cambiar el directorio de la visión de fondo de color en lugar de crear un nuevo punto de vista.. como self.window?.rootViewController?.view.backgroundColor = UIColor.black
    • Cómo hacer una vista única del controlador de la barra de estado transparente si se utiliza este código?

  3. 27

    1) establecer el UIViewControllerBasedStatusBarAppearance para SÍ en el plist

    2) en viewDidLoad hacer un [self setNeedsStatusBarAppearanceUpdate];

    3) agregue el método siguiente:

     -(UIStatusBarStyle)preferredStatusBarStyle{ 
        return UIStatusBarStyleLightContent; 
     } 

    ACTUALIZACIÓN:

    compruebe también los desarrolladores de la guía-para-el-ios-7-en la barra de estado

    • usted puede cambiar a negro o blanco
    • Esto no tiene ningún efecto (ios7, el simulador). El «preferredStatusBarStyle» nunca se invoca.
    • está usted usando xib?. si SÍ cambiar la barra de estado de valor en una simulación de las métricas de la propiedad
    • Ah, he encontrado el problema. Apple UINavigationController agarra la notificación – es decir, su respuesta es sólo para cuando el controlador de vista es la parte superior del controlador, no hay contenedores (sin ficha-bar, no hay barra de navegación, etc).
    • Caso especial cuando se utiliza Storyboard + NavigationController. Hacer #1 arriba. Luego, hay que crear una subclase para UINavigationController (llamada myNavController). En el Guión gráfico, establecer el NavigationController de la clase a «myNavController». En myNavController.m, do #2 & #3 arriba. El método #3 ahora será llamado en la subclase (establecer un registro o punto a observar).
  4. 25

    Mientras que la manipulación del color de fondo de la barra de estado de iOS 7, hay 2 casos

    Caso 1: Vista con la Barra de Navegación

    En este caso, utilice el código siguiente en el método viewDidLoad

     UIApplication *app = [UIApplication sharedApplication];
     CGFloat statusBarHeight = app.statusBarFrame.size.height;
    
     UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarHeight, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
     statusBarView.backgroundColor = [UIColor yellowColor];
     [self.navigationController.navigationBar addSubview:statusBarView];

    Caso 2: Vista sin Barra de Navegación

    En este caso, utilice el código siguiente en el método viewDidLoad

     UIApplication *app = [UIApplication sharedApplication];
     CGFloat statusBarHeight = app.statusBarFrame.size.height;
    
     UIView *statusBarView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
     statusBarView.backgroundColor  =  [UIColor yellowColor];
     [self.view addSubview:statusBarView];

    El enlace de la fuente http://code-ios.blogspot.in/2014/08/how-to-change-background-color-of.html

    • Esto funcionó bien para mí, pero la barra de estado debe ser 20pt de alta: [[UIView alloc] initWithFrame:CGRectMake(0, -20, 320, 20)];
    • editado la respuesta.
  5. 15

    Puede establecer el color de fondo para la barra de estado durante la ejecución de la aplicación o durante viewDidLoad de su controlador de vista.

    extension UIApplication {
    
        var statusBarView: UIView? {
            return value(forKey: "statusBar") as? UIView
        }
    
    }
    
    //Set upon application launch, if you've application based status bar
    class AppDelegate: UIResponder, UIApplicationDelegate {
    
        var window: UIWindow?
    
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
            UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
            return true
        }
    }
    
    
    or 
    //Set it from your view controller if you've view controller based statusbar
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
        }
    
    }

    Aquí está el resultado:

    Cómo cambiar la barra de estado de color de fondo y color de texto en iOS 7?


    Aquí es Las Instrucciones De Apple/Instrucción sobre la barra de estado de cambio. Sólo Dark & luz (tiempo & negro) están permitidos en la barra de estado.

    Aquí es – como cambiar la barra de estado estilo:

    Si desea configurar la barra de estado estilo, nivel de aplicación, a continuación, establezca UIViewControllerBasedStatusBarAppearance a NO en su `.plist’ archivo.

    si usted wan para establecer la barra de estado estilo, en vista del nivel de controlador, a continuación, siga estos pasos:

    1. Conjunto de la UIViewControllerBasedStatusBarAppearance a YES en el .plist archivo, si usted necesita para establecer la barra de estado estilo en UIViewController sólo nivel.
    2. En el viewDidLoad función add – setNeedsStatusBarAppearanceUpdate

    3. reemplazar preferredStatusBarStyle en su controlador de vista.

    override func viewDidLoad() {
        super.viewDidLoad()
        self.setNeedsStatusBarAppearanceUpdate()
    }
    
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    • La aplicación ha sido rechazada si las usamos? El cambio de la statusBarView color como esto está permitido?
    • No puedo decir si apple lo va a aceptar o no, porque he implementado esta solución en mi aplicación empresarial, que no tiene que presentar en la App store. 🙂
    • Si pongo esto en un viewdidload de un viewcontroller en una ficha basada en la aplicación, se establece el color para cada viewController, no sólo donde pongo el código (es normal?)
  6. 14

    En iOS 7 la barra de estado no tiene un fondo, por lo tanto, si usted pone un negro 20px-alta vista detrás de ella, va a lograr el mismo resultado que el de iOS 6.

    También es posible que desee leer la iOS 7 interfaz de usuario Guía de Transición para más información sobre el tema.

    • Gabriele, puede usted por favor proporcione el código de cómo poner 20px alta vista detrás de ella?
    • Dejel, que en Shahid la respuesta.
    • No sólo tiene que utilizar «20» ! Usted puede obtener el valor correctamente, consulte la extensión de mi respuesta.
  7. 8

    Escribir esto en el Método ViewDidLoad:

    if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) {
        self.edgesForExtendedLayout=UIRectEdgeNone;
        self.extendedLayoutIncludesOpaqueBars=NO;
        self.automaticallyAdjustsScrollViewInsets=NO;
    }

    Se fija la barra de estado de color para mí y otra interfaz de usuario misplacements también a una medida.

  8. 6

    Sólo para añadir a Shahid la respuesta – usted puede dar cuenta de los cambios de orientación o diferentes dispositivos que utilizan este (iOS7+):

    - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
      ...
    
      //Create the background
      UIView* statusBg = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.window.frame.size.width, 20)];
      statusBg.backgroundColor = [UIColor colorWithWhite:1 alpha:.7];
    
      //Add the view behind the status bar
      [self.window.rootViewController.view addSubview:statusBg];
    
      //set the constraints to auto-resize
      statusBg.translatesAutoresizingMaskIntoConstraints = NO;
      [statusBg.superview addConstraint:[NSLayoutConstraint constraintWithItem:statusBg attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:statusBg.superview attribute:NSLayoutAttributeTop multiplier:1.0 constant:0.0]];
      [statusBg.superview addConstraint:[NSLayoutConstraint constraintWithItem:statusBg attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:statusBg.superview attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0.0]];
      [statusBg.superview addConstraint:[NSLayoutConstraint constraintWithItem:statusBg attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:statusBg.superview attribute:NSLayoutAttributeRight multiplier:1.0 constant:0.0]];
      [statusBg.superview addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[statusBg(==20)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(statusBg)]];
      [statusBg.superview setNeedsUpdateConstraints];
      ...
    }
    • Sí, este es aún mejor para manejar los tamaños de pantalla y orientaciones. También hay que añadir algo como esto alrededor de este código: if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)
  9. 6

    Aquí es un total, copiar y pegar solución, con una

    absolutamente correcta explicación

    de cada problema.

    Gracias a Warif Akhand Rishi !

    por el increíble relación ruta de acceso clave statusBarWindow.statusBar. Bueno.

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    
        //handle the iOS bar!
    
        //>>>>>NOTE<<<<<
        //>>>>>NOTE<<<<<
        //>>>>>NOTE<<<<<
        //"Status Bar Style" refers to the >>>>>color of the TEXT<<<<<< of the Apple status bar,
        //it does NOT refer to the background color of the bar. This causes a lot of confusion.
        //>>>>>NOTE<<<<<
        //>>>>>NOTE<<<<<
        //>>>>>NOTE<<<<<
    
        //our app is white, so we want the Apple bar to be white (with, obviously, black writing)
    
        //make the ultimate window of OUR app actually start only BELOW Apple's bar....
        //so, in storyboard, never think about the issue. design to the full height in storyboard.
        let h = UIApplication.shared.statusBarFrame.size.height
        let f = self.window?.frame
        self.window?.frame = CGRect(x: 0, y: h, width: f!.size.width, height: f!.size.height - h)
    
        //next, in your plist be sure to have this: you almost always want this anyway:
        //<key>UIViewControllerBasedStatusBarAppearance</key>
        //<false/>
    
        //next - very simply in the app Target, select "Status Bar Style" to Default.
        //Do nothing in the plist regarding "Status Bar Style" - in modern Xcode, setting
        //the "Status Bar Style" toggle simply sets the plist for you.
    
        //finally, method A:
        //set the bg of the Apple bar to white.  Technique courtesy Warif Akhand Rishi.
        //note: self.window?.clipsToBounds = true-or-false, makes no difference in method A.
        if let sb = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView {
            sb.backgroundColor = UIColor.white
            //if you prefer a light gray under there...
            //sb.backgroundColor = UIColor(hue: 0, saturation: 0, brightness: 0.9, alpha: 1)
        }
    
        /*
        //if you prefer or if necessary, method B:
        //explicitly actually add a background, in our app, to sit behind the apple bar....
        self.window?.clipsToBounds = false //MUST be false if you use this approach
        let whiteness = UIView()
        whiteness.frame = CGRect(x: 0, y: -h, width: f!.size.width, height: h)
        whiteness.backgroundColor = UIColor.green
        self.window!.addSubview(whiteness)
        */
    
        return true
    }
  10. 6

    para el fondo usted puede agregar fácilmente una vista, como en el ejemplo:

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
    view.backgroundColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.1];
    [navbar addSubview:view];

    donde «navbar» es un UINavigationBar.

    • Las dos primeras líneas son correctas.. Pero la Última Línea debe ser [navigationController.ver addSubview:ver]; debe ser añadido en el interior de UINavigationController la vista no UINavigationBar de ver como va a agregar la vista, después de 20 px de la barra de estado no se superponen barra de estado.
    • Ya esta resuelto mi isuue
    • En Swift usar este: vamos rect = CGRect(x: 0, y: 0, width: UIScreen.principal.límites.anchura, altura: UIApplication.compartida.statusBarFrame.altura) vamos a la barra = UIView(marco: rect) de la barra.backgroundColor = UIColor.blanco navigationController?.vista.addSubview(bar)
  11. 4

    Cambiar el color de fondo de la barra de estado:
    Swift:

    let proxyViewForStatusBar : UIView = UIView(frame: CGRectMake(0, 0,self.view.frame.size.width, 20))    
            proxyViewForStatusBar.backgroundColor=UIColor.whiteColor()
            self.view.addSubview(proxyViewForStatusBar)
  12. 4

    Swift 4:

    //Cambio de la barra de estado de color de fondo

    let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
    
    statusBar?.backgroundColor = UIColor.red
  13. 1

    En el caso de swift 2.0 en iOS 9

    Lugar el siguiente en la aplicación de delegado, en virtud de didFinishLaunchingWithOptions:

        let view: UIView = UIView.init(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.size.width, 20))
    
        view.backgroundColor = UIColor.blackColor()  //The colour you want to set
    
        view.alpha = 0.1   //This and the line above is set like this just if you want 
                              the status bar a darker shade of 
                              the colour you already have behind it.
    
        self.window!.rootViewController!.view.addSubview(view)
    • Esto funciona, pero no creo que realmente es la mejor manera de manejar este estilo
  14. 1

    iTroid23 solución que funcionó para mí. Echaba de menos la solución rápida. Así que tal vez esto es útil:

    1) En mi plist tuve que añadir esto:

    <key>UIViewControllerBasedStatusBarAppearance</key>
    <true/>

    2) no tenía la necesidad de llamar «setNeedsStatusBarAppearanceUpdate».

    3) En swift he tenido que añadir esto a mi UIViewController:

    override func preferredStatusBarStyle() -> UIStatusBarStyle {
        return UIStatusBarStyle.LightContent
    }
    • Gracias por «UIViewControllerBasedStatusBarAppearance» clave, me ayudó 🙂
  15. 1

    He conseguido personalizar la barra de Estado de color bastante simple adición en AppDelegate.cs archivo en el método:

    public override bool FinishedLaunching(UIApplication app, NSDictionary options)

    siguiente código:

    UIView statusBar = UIApplication.SharedApplication.ValueForKey(new NSString("statusBar")) as UIView;
    
    if (statusBar!=null && statusBar.RespondsToSelector(new Selector("setBackgroundColor:")))
    {
       statusBar.BackgroundColor = Color.FromHex(RedColorHex).ToUIColor();
    }

    Así se consigue algo como esto:

    Cómo cambiar la barra de estado de color de fondo y color de texto en iOS 7?

    Link: https://jorgearamirez.wordpress.com/2016/07/18/lesson-x-effects-for-the-status-bar/

    • ESTA ES UNA SOLUCIÓN SI NO ESTÁ UTILIZANDO LAS PÁGINAS DE NAVEGACIÓN Y FUNCIONA PARA IOS 11 DEMASIADO
  16. 0

    Para el color de la barra: proporcionar una imagen de fondo personalizado para el bar.

    Para el color del texto: Uso de la información en Acerca de Manejo de Texto en iOS

    • esto no es acerca de esrtar un color de texto
    • Añadir una imagen de fondo es una exageración si usted sólo desea establecer un sólido de color, y no resulta factible, especialmente si usted quiere ser capaz de cambiar el color sobre la marcha
  17. 0

    Si usted está usando un UINavigationController, puede utilizar una extensión como esta:

    extension UINavigationController {
    private struct AssociatedKeys {
    static var navigationBarBackgroundViewName = "NavigationBarBackground"
    }
    var navigationBarBackgroundView: UIView? {
    get {
    return objc_getAssociatedObject(self,
    &AssociatedKeys.navigationBarBackgroundViewName) as? UIView
    }
    set(newValue) {
    objc_setAssociatedObject(self,
    &AssociatedKeys.navigationBarBackgroundViewName,
    newValue,
    .OBJC_ASSOCIATION_RETAIN)
    }
    }
    func setNavigationBar(hidden isHidden: Bool, animated: Bool = false) {
    if animated {
    UIView.animate(withDuration: 0.3) {
    self.navigationBarBackgroundView?.isHidden = isHidden
    }
    } else {
    navigationBarBackgroundView?.isHidden = isHidden
    }
    }
    func setNavigationBarBackground(color: UIColor, includingStatusBar: Bool = true, animated: Bool = false) {
    navigationBarBackgroundView?.backgroundColor = UIColor.clear
    navigationBar.backgroundColor = UIColor.clear
    navigationBar.barTintColor = UIColor.clear
    let setupOperation = {
    if includingStatusBar {
    self.navigationBarBackgroundView?.isHidden = false
    if self.navigationBarBackgroundView == nil {
    self.setupBackgroundView()
    }
    self.navigationBarBackgroundView?.backgroundColor = color
    } else {
    self.navigationBarBackgroundView?.isHidden = true
    self.navigationBar.backgroundColor = color
    }
    }
    if animated {
    UIView.animate(withDuration: 0.3) {
    setupOperation()
    }
    } else {
    setupOperation()
    }
    }
    private func setupBackgroundView() {
    var frame = navigationBar.frame
    frame.origin.y = 0
    frame.size.height = 64
    navigationBarBackgroundView = UIView(frame: frame)
    navigationBarBackgroundView?.translatesAutoresizingMaskIntoConstraints = true
    navigationBarBackgroundView?.autoresizingMask = [.flexibleWidth, .flexibleBottomMargin]
    navigationBarBackgroundView?.isUserInteractionEnabled = false
    view.insertSubview(navigationBarBackgroundView!, aboveSubview: navigationBar)
    }
    }

    Que, básicamente, hace que la barra de navegación transparente de fondo y utiliza otro UIView como el fondo. Usted puede llamar a la setNavigationBarBackground método de su controlador de navegación para ajustar la barra de navegación de color de fondo junto con la barra de estado.

    Ten en cuenta que tienes a continuación, utilice el setNavigationBar(hidden: Bool, animated: Bool) método en la extensión cuando se desea ocultar la barra de navegación de lo contrario el punto de vista de que fue utilizado como el fondo todavía será visible.

  18. 0

    Swift 4

    En Info.plist añadir esta propiedad

    Vista basada en el controlador de la barra de estado de apariencia para NO

    y después de que en AppDelegate dentro de la didFinishLaunchingWithOptions añadir estas líneas de código

    UIApplication.shared.isStatusBarHidden = false
    UIApplication.shared.statusBarStyle = .lightContent
  19. 0

    En Swift de Xcode 5 y 10.2

    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(0.1 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: {
    //Set status bar background colour
    let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
    statusBar?.backgroundColor = UIColor.red
    //Set navigation bar subView background colour
    for view in controller.navigationController?.navigationBar.subviews ?? [] {
    view.tintColor = UIColor.white
    view.backgroundColor = UIColor.red
    }
    })

    Aquí me fijo barra de estado de color de fondo y la barra de navegación de color de fondo. Si usted no desea que la barra de navegación de color comentarlo.

  20. 0

    Probar esta.
    Utilice este código en tu clase appdelegate didFinishLaunchingWithOptions función:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    [application setStatusBarHidden:NO];
    UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
    if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
    statusBar.backgroundColor = [UIColor blackColor];
    }
  21. 0

    Código Swift

                let statusBarView = UIView(frame: CGRect(x: 0, y: 0, width: view.width, height: 20.0))
    statusBarView.backgroundColor = UIColor.red
    self.navigationController?.view.addSubview(statusBarView)

Dejar respuesta

Please enter your comment!
Please enter your name here