设置plist文件方式2种
- UIApplication设置
if (@available(iOS 13.0, *)) {
[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleDarkContent];
} else {
[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleDefault];
}
- 控制器设置
- (UIStatusBarStyle)preferredStatusBarStyle
{
[super preferredStatusBarStyle];
if (@available(iOS 13.0, *)) {
return UIStatusBarStyleDarkContent;
} else {
return UIStatusBarStyleDefault;
}
}
plist文件作怪

View controller-based status bar appearance
设置NO
或者sourceCode里面加
<key>UIViewControllerBasedStatusBarAppearance</key> <false/>
- 如果false NO 则在单独控制器设置preferredStatusBarStyle无效 默认UIAppLication 设置的状态栏优先
- 所以为了单独设置 还是设置YES 或者从plist文件删除这个属性
<key>UIViewControllerBasedStatusBarAppearance</key> <true/>
image.png
删除也行
控制器中设置
默认黑色
TabBarController
#pragma mark - 状态栏style
- (UIStatusBarStyle)preferredStatusBarStyle
{
return self.selectedViewController.preferredStatusBarStyle;
}
UINavigationController
#pragma mark - 状态栏style
- (UIStatusBarStyle)preferredStatusBarStyle
{
return self.topViewController.preferredStatusBarStyle;
}
Controller
@property(nonatomic,assign)UIStatusBarStyle stausBarStyle;
- (void)createBaseProperty
{
if (@available(iOS 13.0, *)) {
self.stausBarStyle = UIStatusBarStyleDarkContent;
} else {
self.stausBarStyle = UIStatusBarStyleDefault;
}
//self.stausBarStyle = UIStatusBarStyleLightContent;
}
- (void)viewDidLoad {
[super viewDidLoad];
[self createBaseProperty];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self setNeedsStatusBarAppearanceUpdate];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self setNeedsStatusBarAppearanceUpdate];
}
#pragma mark - 状态栏
- (UIStatusBarStyle)preferredStatusBarStyle
{
[super preferredStatusBarStyle];
/**
if (@available(iOS 13.0, *)) {
return UIStatusBarStyleDarkContent;
} else {
return UIStatusBarStyleDefault;
}
*/
return self.stausBarStyle;
}
- (BOOL)prefersStatusBarHidden
{
return NO;
}
网友评论