J'avais l'habitude d'utiliser setStatusBarStyle
dans mon projet et cela fonctionne bien, mais il est obsolète, donc j'utilise preferredStatusBarStyle
, cela n'a pas fonctionné. sachant que j'ai:
Remplacer la fonction
cette fonction n'est pas appelée
Remarque: j'utilise le contrôleur de navigation.
Voici Apple Guidelines/Instruction sur le changement de la barre d'état.
Si vous souhaitez définir le style de la barre d'état, au niveau de l'application, définissez UIViewControllerBasedStatusBarAppearance
sur NO
dans votre .plist
fichier. Et dans votre appdelegate
> didFinishLaunchingWithOptions
ajoutez les ines suivants (par programme, vous pouvez le faire à partir du délégué d'application).
Objectif C
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
Rapide
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.statusBarStyle = .lightContent
return true
}
si vous souhaitez définir le style de la barre d'état, au niveau du contrôleur de vue, procédez comme suit:
UIViewControllerBasedStatusBarAppearance
sur YES
dans .plist
fichier, si vous devez définir le style de la barre d'état au niveau UIViewController uniquement.Dans la fonction d'ajout de viewDidLoad - setNeedsStatusBarAppearanceUpdate
remplacez PreferredStatusBarStyle dans votre contrôleur de vue.
Objectif C
- (void)viewDidLoad
{
[super viewDidLoad];
[self setNeedsStatusBarAppearanceUpdate];
}
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
Rapide
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Définissez la valeur de .plist en fonction du niveau de configuration du style de la barre d'état.
Vous pouvez 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: