UIViewControllerBasedStatusBarAppearance = YES的時(shí)候
使用UIImagePickerController的時(shí)候, 如何修改狀態(tài)欄的顏色?
1 . 所有的模態(tài)視圖都可以通過(guò)分類覆蓋preferredStatusBarStyle方法來(lái)修改視圖狀態(tài)欄樣式(比如UIAlertController)
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
2 . 因?yàn)閁IImagePickerController繼承UINavigationController
所以需要覆蓋childViewControllerForStatusBarStyle方法, 保險(xiǎn)起見, 我依舊覆蓋了preferredStatusBarStyle方法. 記憶中兩個(gè)方法都管用
(實(shí)際上, 如果childViewControllerForStatusBarStyle的返回值不為空, NavigationController是不會(huì)調(diào)用preferredStatusBarStyle方法的, 狀態(tài)欄也會(huì)是childViewController中設(shè)置的樣式, 所以如下寫法其實(shí)是黑科技...雖然效果一致)
- (UIStatusBarStyle)preferredStatusBarStyle {
return self.visibleViewController.preferredStatusBarStyle;
}
- (UIViewController *)childViewControllerForStatusBarStyle {
UIViewController *viewController = self.visibleViewController;
return viewController;
}
到此為止, 進(jìn)入相冊(cè)可以看到狀態(tài)欄已經(jīng)是自己期望的樣式, 但是退出相冊(cè)的時(shí)候發(fā)現(xiàn)狀態(tài)欄又變成了默認(rèn)的樣式(鬼知道是為什么). 所以還需要完成下面這一步
3 . UIImagePickerController的根視圖是PUAlbumListViewController類, 可惜蘋果并沒有公開這個(gè)類, 我只好寫了個(gè)UIViewController分類, 同樣是覆蓋preferredStatusBarStyle方法
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}