【问题标题】:preferredStatusBarStyle .lightContent doesn't work with Navigation ControllerpreferredStatusBarStyle .lightContent 不适用于导航控制器
【发布时间】:2018-02-06 04:34:17
【问题描述】:

preferredStatusBarStyle .lightContent 不适用于导航控制器。我在下面尝试过这种方法

override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }

这是我第一次面对这种问题。此代码适用于我以前的应用程序。

我什至在我的目标中更改了这个:

【问题讨论】:

标签: ios iphone swift statusbar uistatusbar


【解决方案1】:

我认为您忘记更改 info.plist 中的状态栏样式

更改 info.plist查看基于控制器的状态栏外观并将其设置为YES

在您的 ViewController 中:

 override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } 

不需要其他代码

【讨论】:

  • 我已将其设置为 no ,其次我不想在应用程序委托中设置它,如果我这样做整个应用程序将是应用程序委托内的内容
  • 然后设置为YES
  • 还是不行我有导航控制器,它工作正常你认为这可能是问题吗
  • setNeedsStatusBarAppearanceUpdate() 在 vi​​ewController 的 viewDidAppear 方法中添加这一行
  • 仍然显示黑色状态栏我已经测试了所有这些方法但我会和你一起再次测试它没有任何效果
【解决方案2】:

确保在 Info.plist 文件中将 View controller-based status bar appearance 设置为 NO。检查您是否在视图控制器中以编程方式将状态栏设置为不同的颜色也会很有帮助。如果你使用上面的函数,你会打电话给self.setNeedsStatusBarAppearanceUpdate吗?但是,如果您在项目设置中将 Light 设置为值,在 plist 文件中将 NO 设置为值,则根本不需要编写任何代码。

过去对我有用的另一个选项是在您的 AppDelegate 文件中,在 didFinishLaunchingWithOptions 函数中执行以下操作:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    UIApplication.shared.statusBarStyle = .lightContent

    return true
}

【讨论】:

  • 我已将其设置为 no ,其次我不想在应用程序委托中设置它,如果我这样做整个应用程序将是应用程序委托内的内容
  • 整个应用程序不会在应用程序委托中——将代码放在应用程序委托中只会使代码适用于您应用程序中的每个文件和对象。
  • 它可以工作,但是使用此代码,每个 viewController 都将设置为浅色内容
  • 你只希望特定的视图控制器有一个轻的状态栏还是全部?如果你想要特定的视图控制器,你需要将plist中的值设置为yes,包含特定的代码,然后在你想要一个轻状态栏的每个视图控制器的viewDidLoad方法中调用setNeedsStatusBarAppearanceUpdate .
  • 问题是我有一个导航控制器在 navigationController 上尝试这些方法,看看你自己是否可行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 2020-07-14
  • 2018-06-15
相关资源
最近更新 更多