web-dev-qa-db-fra.com

Comment définir la couleur de la barre d'état sur iPhone X?

J'utilise le navigateurContrôleur, et je cache la barre de navigation, comment définir la couleur de la barre de statut sur iPhoneX? Je ne veux pas définir self.view.backgroundColor

iPhoneX encoche de couleur 

 enter image description here

7
Jerny
UIView *statusBar = (UIView *)[[UIApplication sharedApplication] valueForKey:@"statusBar"];
statusBar.backgroundColor = [UIColor greenColor];
4
Jerny

Voici un truc astucieux pour changer/définir la couleur d’arrière-plan de la barre d’état lors du lancement de l’application ou pendant viewDidLoad de votre contrôleur de vue.

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
    }

}



Voici le résultat:

enter image description here

2
Krunal

Swift 4

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

Dans Interface Builder, j'ai simplement ajouté une vue à une hauteur de 0x0, une hauteur de 44 pixels et une largeur identique à celle de la vue de niveau supérieur, puis ai défini cette vue sur la couleur d'arrière-plan souhaitée. Cela a modifié la couleur d'arrière-plan de la barre d'état sans affecter la couleur d'arrière-plan de la vue.

Dans mon cas, j'avais besoin de quelque chose comme ça parce que la moitié supérieure de mon écran est une couleur et la moitié inférieure est l'autre. Je n'ai pas vu d'autre moyen de faire en sorte que la barre d'état corresponde à la couleur supérieure et que la zone du bouton d'accueil corresponde à la couleur inférieure.

Cela pourrait facilement être fait par programme si la vue supplémentaire gênait d'autres appareils que l'iPhone X. Dans mon cas, cela ne posait pas de problèmes avec d'autres appareils.

0
arlomedia