iOS StatusBarStyle 在设置为浅色时不会改变

iOS StatusBarStyle not changing when set to light

我正在开发一个应用程序,我希望导航栏不可见并具有深色背景。我希望状态栏颜色为白色。我也想一开始隐藏状态栏。

我已将状态栏样式设置为浅色

但我得到的结果总是黑色文本状态栏,如下所示。

我曾尝试将 "View controller-based status bar appearance" 设置为 NO,结果是有一个隐藏的状态栏。我也尝试让 prefersStatusBarHidden 返回 NO 但仍然相同。

我试过 "View controller-based status bar appearance" 是,结果是黑色文本。我试着让 preferredStatusBarStyle 返回 UIStatusBarStyleLightContent 但还是一样。

我做错了什么。提前致谢。

AppDelegate:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    UIApplication.shared.statusBarStyle = .lightContent
    return true
}

问题是嵌入了初始视图控制器的 UINavigationController 引起的。我已经子classed UINavigationController (NLNavigationController) 并将初始导航控制器的自定义 class 设置为此 ( NLNavigationController)。在新的 subclass 我有这个。

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setNeedsStatusBarAppearanceUpdate];
}

-(BOOL)prefersStatusBarHidden{
    return NO;
}

-(UIStatusBarStyle)preferredStatusBarStyle{
    return UIStatusBarStyleLightContent;
}

为了让所有这些都起作用,我必须在 info.plist

中设置

View controller-based status bar appearance set to YES

通过这些更改,我得到了以下结果。

https://i.stack.imgur.com/x88Ae.png