iOS開發(fā) 動態(tài)修改狀態(tài)欄顏色

關(guān)于狀態(tài)欄UIStatusBarStyle

狀態(tài)欄有以下幾種顯示風(fēng)格:
1.UIStatusBarStyleDefault
2.UIStatusBarStyleLightContent
API_AVAILABLE(ios(7.0))
3.UIStatusBarStyleDarkContent
API_AVAILABLE(ios(13.0))
4.UIStatusBarStyleBlackTranslucent API_DEPRECATED_WITH_REPLACEMENT("UIStatusBarStyleLightContent", ios(2.0, 7.0)) = 1,
5.UIStatusBarStyleBlackOpaque API_DEPRECATED_WITH_REPLACEMENT("UIStatusBarStyleLightContent", ios(2.0, 7.0)) = 2,
UIStatusBarStyleLightContent 的背景顏色加載方法

UIView *statusBar = [[UIView alloc] initWithFrame:
CGRectMake(0, -20, self.view.frame.size.width, 20)];
statusBar.backgroundColor = myColor;
[self.navigationController.navigationBar addSubview:statusBar];

我們想要改變狀態(tài)欄樣式只需要在viewController里面重載preferredStatusBarStyle方法即可

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

如何調(diào)用preferredStatusBarStyle方法呢

 [self setNeedsStatusBarAppearanceUpdate];
//讓其強制刷新 有些類似于 view的layoutIfNeeded方法

當(dāng)我們調(diào)用setNeedsStatusBarAppearanceUpdate時,系統(tǒng)會調(diào)用application.window.rootViewController的preferredStatusBarStyle方法,而不是當(dāng)前控制器的preferredStatusBarStyle方法。在這個時候,一個重要的方法就要派上用場了,那就是:childViewControllerForStatusBarStyle。

childViewControllerForStatusBarStyle默認(rèn)返回nil。所以我們需要重寫這個方法。
加入跟試圖控制器是navigationController,那么,我們需要重寫childViewControllerForStatusBarStyle

那么,我們子類化一個導(dǎo)航控制器ZXNavigationController,重寫它的childViewControllerForStatusBarStyle方法:

@implementation ZXNavigationController

- (UIViewController *)childViewControllerForStatusBarStyle
{
    return self.topViewController;
}

- (void)viewDidLoad {
    [super viewDidLoad];
}

提示:首先info.plist添加
View controller-based status bar appearance 將其設(shè)置為YES
如果設(shè)置為NO則不能手動對狀態(tài)欄樣式進(jìn)行修改

部分內(nèi)容轉(zhuǎn)載于https://www.cnblogs.com/sundaysgarden/articles/9194636.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容