您的位置:首页 > Web前端 > CSS

iOS-设置某些页面的状态栏样式

2017-05-23 21:18 357 查看

全局页面状态栏样式白色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就完成了。

参考地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: