Cuando cambio el color de fondo de la barra de estado a UIColor.gray nativo, cambia. Pero cuando quiero usar un color personalizado, se vuelve de color negro.

UIApplication.shared.statusBarView?.backgroundColor = UIColor.gray: este código funciona correctamente. El color de fondo de la barra de estado es gris

UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 30/255, green: 30/255, blue: 30/255, alpha: 1): este código funciona incorrectamente. El color de fondo de la barra de estado es negro

2
Said-Abdulla Atkaev 15 ene. 2018 a las 13:54

3 respuestas

La mejor respuesta

En primer lugar, configure Ver propiedad de apariencia de la barra de estado basada en el controlador No en el archivo info.plist.

Luego agregue el siguiente código en el método didFinishLaunchingWithOptions de AppDelegate Class.

if let status = UIApplication.shared.value(forKey: "statusBar") as? UIView {
        status.backgroundColor = UIColor.init(red: 173.0/255.0, green: 173.0/255.0, blue: 44.0/255.0, alpha: 1)
     }

UIApplication.shared.statusBarStyle = .lightContent

Espero que esto te ayude.

5
zeeshan 14 nov. 2018 a las 19:12

El código no es incorrecto, solo que el color que está proporcionando es dark gray en sí mismo. (R:30,G:30,B:30) representa dark gray y eso es lo que se está utilizando en status bar, cambie este color a otro color, por ejemplo (R:202,G:0,B:42) y mostrará un color red .

Tratar

UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 202/255, green: 0/255, blue: 42/255, alpha: 1)

1
Ahsan Ebrahim 15 ene. 2018 a las 12:07

Que esto te ayude en Swift 4. Parece un truco hacky pero funciona.

Puede establecer el color de fondo para la barra de estado durante el inicio 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:

enter image description here

4
Krunal 15 ene. 2018 a las 13:20