Cambiar la barra de estado de color de fondo, color de pasado de iOS 7

Quiero cambiar el color de fondo de la barra de estado de iOS 7, y estoy usando este código:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [UIApplication sharedApplication].statusBarHidden = NO;

        self.window.clipsToBounds = YES;
        [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleLightContent];
        self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
        self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);

        ...
        ...


}

Cuando escribo esto muestra la barra de estado con un fondo negro; quiero que tenga un fondo rojo.

Cambiar la barra de estado de color de fondo, color de pasado de iOS 7

¿Cómo se puede cambiar el color de la barra de estado para tener un fondo rojo en lugar de negro?

Agregar subvista de color rojo. leer esta vez developer.apple.com/library/ios/documentation/userexperience/…
No hay ninguna forma de cambiar el color de la Barra de estado ? otros, a continuación, agregar subvista.

OriginalEl autor Krunal | 2014-01-17

8 Kommentare

  1. 15

    En iOS 7 y versiones posteriores, la barra de estado es transparente. Establecer el backgroundColor de la vista para el color que usted desea para la barra de estado.

    O bien, puede agregar un 20px-alta subvista con el color rojo en la parte superior de la vista.

    Ver el Apple Guía De Transición para más.

    También, asegúrese de que su preferredStatusBarStyle es UIStatusBarStyleLightContent. y en su Información.plist conjunto de «controlador de Vista basado en la apariencia de la barra de estado» en «NO».

    preferredStatusBarStyle ya está UIStatusBarStyleLightContent y no puedo cambiar el color de fondo a rojo porque quiero bg con el blanco y el solo de la barra de estado con el rojo. no hay ninguna forma de cambiar el color de status Bar ? otros, a continuación, agregar subvista.
    No, entonces usted tiene que agregar Subvista de marco CGRectMake(0.0,0.0,320.0,20.0).
    Poner esto en didFinishLaunchingWithOptions en la aplicación delegado solucionado mi problema.

    OriginalEl autor iProgrammer

  2. 27

    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];
    Esto es perfecto para el caso de uso donde el viewcontroller NO se ha incrustado en un controlador de navegación. Este es el swift equivalente: let statusBarHeight: CGFloat = UIApplication.shared.statusBarFrame.height let overlayFrame: CGRect = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: statusBarHeight) self.statusBarOverlayView = UIView(frame: overlayFrame) self.statusBarOverlayView.barTintColor = UIColor.green self.view.addSubview(self.statusBarOverlayView)

    OriginalEl autor Teja Kumar Bethina

  3. 8

    Objetivo c

    (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    
        [[UIApplication sharedApplication] setStatusBarHidden:false];
        UIView *statusBar=[[UIApplication sharedApplication] valueForKey:@"statusBar"];
        statusBar.backgroundColor = [UIColor redColor];
    
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    
    
    
        return YES;
    }

    Este es trabajo para mí. Espero que esto te ayude demasiado.

    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. como la pregunta(stackoverflow.com/questions/47250495/…)

    OriginalEl autor Subramanyam Subbu

  4. 5

    por qué @Teja Kumar Bethina siempre es útil, pero es mejor llegar a la altura de la barra de estado de UIApplication singleton, como el de abajo:

    UIApplication *app = [UIApplication sharedApplication];
    
    UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -app.statusBarFrame.size.height, self.view.bounds.size.width, app.statusBarFrame.size.height)];
        statusBarView.backgroundColor = [UIColor blackColor];
    Estoy de acuerdo. Codificado valores deben ser evitados. Muchas gracias!

    OriginalEl autor Alan Feng

  5. 3

    en el AppDelegate uso

        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

    y en información del proyecto.plist archivo

    conjunto de la bandera NO a la Vista basada en el controlador de la barra de estado de la apariencia de la aplicación.

    Solo cambia el color del texto de la barra de estado y no el color de fondo
    Se actualizará automáticamente según la barra de Navegación de color. ¿Quieres diferente de la barra de navegación?

    OriginalEl autor Madhu

  6. 3

    Llamar a esta función desde ViewDidLoad que pasa con la barra de estado de color.

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

    Espero Que te ayudarán.

    Agradable gracias a su manera funciona!
    La encasillarse en swift 3 sintaxis: let statusBar = (UIApplication.shared.value(forKey: "statusBarWindow") as AnyObject).value(forKey: "statusBar") as? UIView

    OriginalEl autor Deepak Carpenter

  7. 1

    He aquí una rápida solución que utiliza el diseño automático, Si la aplicación está en modo retrato o paisaje de la barra será el ancho correcto. Se añade a la barra de navegación vista como una subvista, por tanto, es compensado por temperatura de -20. Usted podría agregar a su navigationbar la vista principal y, a continuación, el desplazamiento no es necesario. En este ejemplo también se establece que el color sea el mismo que el de la barra de navegación.

    Espero que ayude 🙂

        //Add colored opaque view behind the status bar view
        let statusBarView = UIView()
        statusBarView.backgroundColor = navigationBar.backgroundColor
        statusBarView.translatesAutoresizingMaskIntoConstraints = false
        navigationBar.addSubview(statusBarView)
    
        let views = ["statusBarView": statusBarView]
        let hConstraint = "H:|-0-[statusBarView]-0-|"
        let vConstraint = "V:|-(-20)-[statusBarView(20)]"
    
        var allConstraints = NSLayoutConstraint.constraintsWithVisualFormat(hConstraint,
                options: [], metrics: nil, views: views)
    
        allConstraints += NSLayoutConstraint.constraintsWithVisualFormat(vConstraint,
                options: [], metrics: nil, views: views)
    
        NSLayoutConstraint.activateConstraints(allConstraints)

    OriginalEl autor maninvan

  8. -4

    si su aplicación de navegación basado, a continuación, puede configurar la barra de estado de color de fondo de color rojo, como este:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    [[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];

    puede que le ayudará.

    este código no me funciona 🙁 ,Como u puede ver que no hay UINavigationBar sólo de la barra de estado hay

    OriginalEl autor Shubham

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea