当前位置: 首页 > 知识库问答 >
问题:

当设置基于视图控制器的状态栏外观=是时,状态栏不调用preferredStatusBarStyle

蒋承教
2023-03-14

标题说明了一切。或者我在理解sdk时有一些非常错误的地方,或者苹果的sdk有一些非常错误的地方。

设置(info.plist)基于视图控制器的状态时..=是的,我可以通过调用setNeedsStatusBarEtc来隐藏我的状态栏动画等等。。。但是,我不能改变我喜欢的风格。当我将其设置为“否”时,我可以更改样式,但不能更改所有其他内容。。我该怎么办?怎么了?请帮帮我!

当基于控制器的状态...=YES

因此,在我的ViewController中,我创建了一个statusBarHidden:Bool和重写类var:prefersStatusBarHidden:Bool,preferredStatusBarUpdateAnimation:Bool和preferredStatusBarStyle来更改我的状态栏。

var statusBarHidden = false {
    didSet {
        UIView.animate(withDuration: 0.3) { () -> Void in
            self.setNeedsStatusBarAppearanceUpdate()
        }
    }
}

但是,这段代码将只调用prefersStatusBarHidden和preferredStatusBarUpdateAnimation,而不调用preferredStatusBarStyle。基于控制器的状态不,它被称为,但其他的不是。我只想在一些VCs中隐藏一个lightContent状态栏。。

不推荐的解决方案:

 UIApplication.shared.isStatusBarHidden = true

但我不能动画化(至少我不能)

感谢@WillBoland

共有1个答案

裘安阳
2023-03-14

由于根据此链接,使用以下工作。

[[UIApplication sharedApplication] setStatusBarHidden:NO]

不过,这是不赞成的。

 类似资料:
  • 我需要根据视图控制器改变状态栏样式,所以在我的plist文件“基于视图控制器的状态栏外观”设置为是。 我有时需要隐藏状态栏! 我试图使用setStatusBarHidden,但它似乎只有在“基于视图控制器的状态栏外观”设置为NO时才能工作... 有没有办法隐藏状态栏?

  • 我有一个应用程序,基于视图控制器的状态栏外观设置为。我的一些视图是深色的,一些视图是浅色的,应用程序有一个相当复杂的视图控制器层次结构,但它可以完美地将适当的方法子类化和重写,并与模式视图(捕捉呈现样式等)相结合。 然而,我需要一种全局的方式来查看顶部的特定项目(在状态栏后面,在我的应用程序边界内),就像顶部的个人热点/GarageBand录音/通话等栏一样。由于栏的背景颜色,我想在显示栏时覆盖状

  • 我正在尝试修改状态栏的外观(将文本设置为白色/将样式设置为“灯光”)。通过将其添加到AppDelegate中,我成功地设置了背景色。swift文件: 但是,当我去更改状态栏的文本样式时,甚至在一般情况下更改此样式 我还试图通过nfo.plist修改状态栏,但是没有“基于视图控制器的状态栏外观”字段(见第二张图片)。此外,状态栏样式选项下没有“轻”样式选项(见下图):

  • 在我的. plist文件中,我将“基于视图控制器的状态栏外观”设置为。但是在之后,我的应用程序的行为就好像选项设置为。 在我的应用程序中,我展示了一个呈现的VC。 问题是这样的: 显示photo picker后,在拾取照片库时,状态栏文本的颜色会发生变化 有没有办法不用在我的视图控制器中管理状态栏来解决这个问题?

  • 我有一个视图控制器,这是导航控制器的rootVc。 我需要为rootview控制器隐藏导航栏,因此我使用以下方法来隐藏它并使其重新出现。 我基本上是在rootVc中隐藏导航栏,并为所有其他视图控制器显示它。 但当我移除导航栏时,我看到我的内容正在状态栏下扩展 有办法解决这个问题吗?

  • 我的应用程序使用深色导航栏颜色。因此,我将状态栏的颜色设置为白色(因此对比度很好)。 我通过将barStyle设置为黑色(使状态栏为白色)并将barTint设置为我的深红色来实现这一点。完美地工作。 我展示了一个像这样的: 但是,显示的SafariViewController的状态栏仍为白色。这是一个问题,因为导航栏具有默认的白色透明iOS默认样式。所以状态栏基本上是不可见的。 我怎样才能解决这个