全域頁面狀態列樣式白色Light
之前項目中是全域的白色狀態列樣式,可以在 plist檔案中添加以下選項,然後在Base控制器中寫一句代碼就可以實現全域狀態列白色的狀態。
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
部分頁面狀態列樣式白色Light
iOS 7之後, UIViewController有了一個新的方法:- preferredStatusBarStyle,可以讓使用者指定狀態列風格。
但是我試了一下,卻不起作用。後來才知道原因:這個方法只有在ViewController不包含在UINavigationController中時才起作用。大部分情況下,ViewController不會單獨使用,一般都會嵌套在UINavigationController中的。
所以可以寫一個UINavigationController的擴充,覆蓋其預設實現,返回最上面的ViewController的preferredStatusBarStyle。
OC
//UINavigationController+StatusBar.h#import <UIKit/UIKit.h>@interface UINavigationController (StatusBar)- (UIStatusBarStyle)preferredStatusBarStyle;@end//UINavigationController+StatusBar.m#import "UINavigationController+StatusBar.h"@implementation UINavigationController (StatusBar)- (UIStatusBarStyle)preferredStatusBarStyle { return [[self topViewController] preferredStatusBarStyle];}@end
swift
extension UINavigationController { override public func preferredStatusBarStyle() -> UIStatusBarStyle { return self.topViewController.preferredStatusBarStyle() }}
然後哪需要哪引入UINavigationController+StatusBar.h標頭檔,此時preferredStatusBarStyle就起作用了。如果你用Swift,增加了extension就完成了。
參考地址