全局页面状态栏样式白色Light
之前项目中是全局的白色状态栏样式,可以在 plist文件中添加以下选项,然后在Base控制器中写一句代码就可以实现全局状态栏白色的状态。
Plist
[[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就完成了。
转自这里我这里只是备注一下。感谢原文作者
网友评论