View controller-based status bar appearance 設置為NO的情況
這種可以在工程的 General 中選擇配置倦炒,當然也可以在代碼中進行設置暖夭,使用如下的代碼扛吞,想單獨修改某一個控制器的,也是下面的代碼
p.s. 這些方法在iOS9之后都廢棄了酷鸦,不建議使用
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
View controller-based status bar appearance 設置為YES的情況
未使用navigation bar / 隱藏了navigation bar
這種情況 只要在當前控制器里重寫下面的方法就可以了
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
使用了navigation bar
重寫這個方法是不起作用的
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
這個時候有兩種選擇,一是在對應的導航控制器中設置好顏色牙咏,方法也是重寫preferredStatusBarStyle臼隔,另一種是使用下面的代碼修改,如果只是想修改一個單獨的頁面妄壶,可以在生命周期的方法中設置和重置摔握,比如viewWillAppear 和 viewWillDisappear 中設置
[self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];
隱藏狀態(tài)欄
在當前控制器里重寫下面方法
- (BOOL)prefersStatusBarHidden {
return self.hideStatusBar;
}
如果使用了變量控制隱藏狀態(tài),在變量值修改之后丁寄,要調(diào)用下面方法
self.hideStatusBar = YES;
[self setNeedsStatusBarAppearanceUpdate];
下面這種方式會失效
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];