美文网首页
iOS状态栏字体颜色设置

iOS状态栏字体颜色设置

作者: ios_暗夜行者 | 来源:发表于2021-05-12 17:28 被阅读0次

方法一: preferredStatusBarStyle

View controller-based status bar appearance 设置为 YES, 使用 - [UIViewController preferredStatusBarStyle] 修改状态栏字体色. 适用于iOS7.0+, 推荐.

// MyViewController.m

- (UIStatusBarStyle)preferredStatusBarStyle {

      // 白色

      //return UIStatusBarStyleLightContent;

      // 黑色

      if (@available(iOS 13.0, *)) {

        return UIStatusBarStyleDarkContent;

    } else {

        return UIStatusBarStyleDefault; //黑色, 默认值

    }

}

- (BOOL)prefersStatusBarHidden {

    return YES;  //状态栏隐藏

    //return NO; //状态栏显示, 默认值

}

注意:

若 ViewController 是 UINavigationController 的子控制器时, UINavigationController 的 preferredStatusBarStyle 方法覆盖了 ViewController preferredStatusBarStyle , 导致上述代码无效.

解决办法之一: 自定义导航栏, 重写 preferredStatusBarStyle 指定到当前顶层 viewController 的 preferredStatusBarStyle.

@implementation MyNavigationController

- (UIStatusBarStyle)preferredStatusBarStyle {

UIViewController *topVC = self.topViewController;

return [topVC preferredStatusBarStyle];

}

@end

方法二: setStatusBarStyle:

View controller-based status bar appearance 设置为 NO, 使用 [[UIApplication sharedApplication] setStatusBarStyle:] 改变导航栏字体颜色. 不推荐这种方式, 官方 API 也推荐使用-[UIViewController preferredStatusBarStyle]:

方式 1

在 Xcode : General > Deployment Info > Status Bar Style 设置全局样式 light/dark, 这里的设置会被方式 2 的代码覆盖.

方式 2

在AppDelegate中可以设置整个App的状态栏全局样式:

// AppDelegate.m

//设置状态栏字体颜色

[[UIApplication sharedApplication] setStatusBarStyle:[self _statusBarStyle]];

//设置状态栏隐藏(YES)或显示(NO)

[[UIApplication sharedApplication] setStatusBarHidden:NO];

- (UIStatusBarStyle)_statusBarStyle {

      // 设置字体黑色

    if (@available(iOS 13.0, *)) {

        return UIStatusBarStyleDarkContent; // iOS13+

    } else {

        return UIStatusBarStyleDefault;

    }

}

改变指定页面状态栏的字体颜色需要单独设置:

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    [[UIApplication sharedApplication] setStatusBarStyle:[self _statusBarStyle] animated:NO];// 黑色

      //[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];// 白色

}

记录一下:https://segmentfault.com/a/1190000023390550###

相关文章

网友评论

      本文标题:iOS状态栏字体颜色设置

      本文链接:https://www.haomeiwen.com/subject/wlnadltx.html