隱藏/顯示statusBar(iOS 7.0+)
-
全局隱藏/顯示狀態(tài)欄
- 在info.plist中添加
View controller-based status bar appearance
民褂,并將value設(shè)為NO湿酸,狀態(tài)欄的隱藏/顯示受到全局控制绸硕。 - General-Deployment Info 中勾選或取消勾選
Hide stauts bar
選項柑营,即可隱藏或顯示狀態(tài)欄既绕,此時無法通過代碼中控制狀態(tài)欄
- 在info.plist中添加
-
通過代碼動態(tài)地隱藏/顯示狀態(tài)欄
在info.plist中添加
View controller-based status bar appearance
尿扯,并將value設(shè)為YES闺阱,或刪除View controller-based status bar appearance
字段,系統(tǒng)默認(rèn)為可通過代碼動態(tài)地隱藏/顯示狀態(tài)欄州胳。-
在需要更改status bar隱藏狀態(tài)的頁面重載
- (BOOL)prefersStatusBarHidden
方法即可- (BOOL)prefersStatusBarHidden { return YES; }
如果在當(dāng)前頁面動態(tài)的更改狀態(tài)欄隱藏/顯示狀態(tài)记焊,需要
[self setNeedsStatusBarAppearanceUpdate];
來通知系統(tǒng)狀態(tài)欄要改變。
調(diào)節(jié)statusBar style
- 全局設(shè)置statusBar style
在info.plist中添加Status bar style
栓撞,將value設(shè)為UIStatusBarStyleLightContent
或者UIStatusBarStyleDefault
即可遍膜。 - 動態(tài)調(diào)節(jié)statusBar style
- 在info.plist中添加
View controller-based status bar appearance
,并將value設(shè)為YES - 在需要更改status bar隱藏狀態(tài)的頁面重載
- (UIStatusBarStyle)preferredStatusBarStyle
方法即可- (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleDefault;//黑色字體 //return UIStatusBarStyleLightContent;//亮色字體 }
- 如果在當(dāng)前頁面動態(tài)的更改狀態(tài)欄樣式瓤湘,需要
[self setNeedsStatusBarAppearanceUpdate];
來通知系統(tǒng)狀態(tài)欄要改變瓢颅。 - 如果當(dāng)前的頁面在
UINavigationController
中,還需要新建一個子類弛说,繼承UINavigationController
挽懦,在子類中重載- (UIViewController *)childViewControllerForStatusBarStyle
方法即可。
原因:當(dāng)需要更改status bar syle時木人,系統(tǒng)會首先調(diào)用- (UIViewController *)childViewControllerForStatusBarStyle { return self.topViewController; }
application.window.rootViewController
的- (UIStatusBarStyle)preferredStatusBarStyle
方法信柿,如果此時的rootViewController
為UINavigationController
,那么當(dāng)前的viewController
根本未被調(diào)用虎囚,因此通過- (UIViewController *)childViewControllerForStatusBarStyle
通知系統(tǒng)去調(diào)用rootViewController.topViewController
中的preferredStatusBarStyle
方法角塑。
- 在info.plist中添加