【问题标题】:iOS StatusBarStyle not changing when set to lightiOS StatusBarStyle 设置为亮时不会改变
【发布时间】:2018-03-17 06:03:45
【问题描述】:

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

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

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

我尝试将“基于视图控制器的状态栏外观”设置为 NO,结果是隐藏状态栏。我还尝试让 prefersStatusBarHidden 返回 NO 但仍然相同。

我尝试将“查看基于控制器的状态栏外观”设置为“是”,结果是黑色文本。我试图让preferredStatusBarStyle 返回 UIStatusBarStyleLightContent 但还是一样。

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

【问题讨论】:

标签: ios objective-c uistatusbar


【解决方案1】:

AppDelegate:

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

【讨论】:

  • 感谢您的回复。我已经尝试过这个并且样式没有结果!
【解决方案2】:

问题是嵌入初始视图控制器的 UINavigationController 的原因。我将 UINavigationController (NLNavigationController) 子类化并将初始导航控制器的自定义类设置为此 (NLNavigationController)。在新的子类中我有这个。

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

-(BOOL)prefersStatusBarHidden{
    return NO;
}

-(UIStatusBarStyle)preferredStatusBarStyle{
    return UIStatusBarStyleLightContent;
}

为了让所有这些工作我必须在 info.plist 中设置

查看基于控制器的状态栏外观设置为 YES

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

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

【讨论】:

    猜你喜欢
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多