找遍了網(wǎng)上一些設(shè)置狀態(tài)欄的方法,沒(méi)有比較全面的,所以自己總結(jié)了一個(gè)
設(shè)置樣式和設(shè)置隱藏的方法基本一致,自行類(lèi)比
iOS6及之前版本
在Info.plist表單中設(shè)置 View controller-based status bar appearance字段為 NO(禁用系統(tǒng)自帶的狀態(tài)欄)
在代碼中通過(guò)- (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated進(jìn)行控制
這種方法對(duì)狀態(tài)欄的修改是全局的,對(duì)所有視圖控制器都會(huì)生效
iOS7及之后版本
- iOS6的方法被不被蘋(píng)果推薦使用,會(huì)報(bào)警告
- 在你需要隱藏狀態(tài)欄的視圖控制器類(lèi)中添加這個(gè)方法
- (BOOL)prefersStatusBarHidden{ return YES; }
設(shè)置YES就隱藏狀態(tài)欄,設(shè)置NO顯示狀態(tài)欄
系統(tǒng)會(huì)自動(dòng)調(diào)用這個(gè)函數(shù)
如果需要更改StatusBar的狀態(tài)的話(huà),可以使用在類(lèi)中添加一個(gè)屬性isStatusBarHidden,在init中初始化為你想要的值,添加這個(gè)方法
- (BOOL)prefersStatusBarHidden{ return self.isStatusBarHidden; }
在需要顯示狀態(tài)欄的時(shí)候調(diào)用
self.isStatusBarHidden = NO; [self setNeedsStatusBarAppearanceUpdate];
在需要隱藏狀態(tài)欄的時(shí)候調(diào)用
self.isStatusBarHidden = YES; [self setNeedsStatusBarAppearanceUpdate];
setNeedsStatusBarAppearanceUpdate這個(gè)方法的作用是更新?tīng)顟B(tài)欄,在每次修改狀態(tài)欄設(shè)置或者樣式之后調(diào)用
注意:此方法對(duì)NavigationController無(wú)效,要使其生效可創(chuàng)建一個(gè)NavigationController的類(lèi)別,增加這個(gè)方法
- (UIStatusBarStyle)preferredStatusBarStyle { return [[self topViewController] preferredStatusBarStyle]; }
這個(gè)函數(shù)的返回值默認(rèn)返回nil,此時(shí)系統(tǒng)就會(huì)調(diào)用當(dāng)前viewControllerA的preferredStatusBarStyle函數(shù);如果返回值是另一個(gè)viewControllerB那么系統(tǒng)就會(huì)調(diào)用viewControllerB的preferredStatusBarStyle函數(shù)