Je souhaite modifier la couleur d'arrière-plan de la barre d'état sous iOS 7 et j'utilise ce code:
- (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);
...
...
}
Lorsque j'écris ceci, il affiche la barre d'état avec un fond noir. Je veux qu'il ait un fond rouge.
Comment peut-on changer la couleur de la barre d'état pour avoir un arrière-plan rouge au lieu de noir?
Dans iOS 7 et versions ultérieures, la barre d'état est transparent. Définissez la backgroundColor
de votre vue sur la couleur souhaitée pour la barre d'état.
Vous pouvez également ajouter une sous-vue de 20 pixels de haut avec une couleur rouge en haut de votre vue.
Consultez le Guide de transition Apple pour plus d’informations.
Assurez-vous également que votre preferredStatusBarStyle
est UIStatusBarStyleLightContent
. et dans votre Info.plist, définissez "Afficher l'apparence de la barre d'état basée sur le contrôleur" sur "NON".
Lors du traitement de la couleur d’arrière-plan de la barre d’état dans iOS 7, il existe deux cas.
Cas 1: Vue avec barre de navigation
Dans ce cas, utilisez le code suivant dans votre méthode 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];
Cas 2: Voir sans barre de navigation
Dans ce cas, utilisez le code suivant dans votre méthode 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];
Objectif 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;
}
Cela fonctionne pour moi. J'espère que cela vous aidera aussi.
pour ce que @ Teja Kumar Bethina a fourni est utile, mais il est préférable d’obtenir la hauteur de la barre de statut de UIApplication singleton comme ci-dessous:
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];
en utilisation AppDelegate
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
et dans le fichier info.plist du projet
définir l'indicateur NO sur Afficher l'apparence de la barre d'état basée sur le contrôleur dans l'application.
Appelez cette fonction depuis ViewDidLoad en passant avec la couleur de votre barre d’état.
func setStatusBarBackgroundColor(color: UIColor)
{
guard let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView
else
{
return
}
statusBar.backgroundColor = color
}
J'espère que ça va aider.
Voici une solution Swift qui utilise la mise en page automatique. Si votre application est en portrait ou en paysage, la barre aura la largeur correcte. Elle est ajoutée à la vue de la barre de navigation en tant que sous-vue et est donc décalée de -20. Vous pouvez l'ajouter à la vue parente de votre barre de navigation, puis le décalage n'est pas requis. Cet exemple définira également la couleur de la même manière que la barre de navigation.
J'espère que cela pourra aider :)
// 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)