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