如何隱藏某個(gè)控制器的狀態(tài)欄?
1、在 info.plist 文件增加 View controller-based status bar appearance 屬性,設(shè)置值為 YES。
2、重寫控制器的方法:
- (BOOL)prefersStatusBarHidden {
return self.shouldHiddeStatusBar;
}
3、需要改變狀態(tài)欄狀態(tài),就調(diào)用 setNeedsStatusBarAppearanceUpdate 方法:
[self setNeedsStatusBarAppearanceUpdate];
4、注意?。?!
如果修改了 toVC 的 modalPresentationStyle,一定要修改 toVC 的 modalPresentationCapturesStatusBarAppearance 屬性為 YES,上面的代碼才有效!
例如,present 某個(gè)控制器的時(shí)候,想讓當(dāng)前控制器不消失,就要修改 toVC 的 modalPresentationStyle 屬性為 UIModalPresentationOverFullScreen。當(dāng) toVC 發(fā)生某些事情就隱藏狀態(tài)欄,需要這樣寫:
// fromVC.m
UIViewController *toVC = [UIViewController new];
// 當(dāng)前控制器不消失,toVC 透明的時(shí)候能看到
toVC.modalPresentationStyle = UIModalPresentationOverFullScreen;
// 是否接管狀態(tài)欄外觀,即重寫的 prefersStatusBarHidden 等方法是否會(huì)被調(diào)用
toVC.modalPresentationCapturesStatusBarAppearance = YES;
[self presentViewController:toVC animated:YES completion:nil];
被 presented 的控制器要這樣寫:
// toVC.m
// 重寫
- (BOOL)prefersStatusBarHidden {
return self.shouldHiddeStatusBar;
}
// 某個(gè)事件處理函數(shù)
- (void)buttonClick {
// 刷新狀態(tài)欄
[self setNeedsStatusBarAppearanceUpdate];
}