设置基于视图控制器的状态栏外观 = YES 时,StatusBar 不会调用 PreferredStatusBarStyle

Posted

技术标签:

【中文标题】设置基于视图控制器的状态栏外观 = YES 时,StatusBar 不会调用 PreferredStatusBarStyle【英文标题】:StatusBar ins't calling preferredStatusBarStyle when setting View controller-based status bar appearance = YES 【发布时间】:2017-06-04 22:07:11 【问题描述】:

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

当设置 (info.plist) 查看基于控制器的状态.. = YES,我可以通过调用 setNeedsStatusBarEtc 来隐藏我的状态栏动画等等...但是然后,我无法更改我的首选状态栏样式。当我将其设置为 NO 时,我可以更改样式,但不能更改其他所有内容。我该怎么办?怎么了?请帮忙!

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

因此,在我的 ViewController 中,我创建了一个 statusBarHidden: Bool 并覆盖类 var: prefersStatusBarHidden: Bool、preferredStatusBarUpdateAnimation: Bool 和 preferredStatusBarStyle 来更改我的 statusBar。

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

但是,这段代码将只调用prefersStatusBarHidden 和preferredStatusBarUpdateAnimation,而不是preferredStatusBarStyle。 Whit controller-based status.. = NO,它被调用,但其他的不是。我只想要一个隐藏在一些 VC 中的 lightContent 状态栏..

已弃用的解决方案:

 UIApplication.shared.isStatusBarHidden = true

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

感谢@WillBoland

【问题讨论】:

请发布您的代码。 @BJHStudios 更新了! @Gehlen,请提供更多代码。很难理解你。 'l prefersStatusBarHidden 和 preferredStatusBarUpdateAnimation' - 你在哪里使用它? “不,它被称为。” - 这是什么意思?请让您的帖子更清晰。 @Vyacheslav 已更新! 查看此链接***.com/questions/41670828/… 【参考方案1】:

根据this link,使用以下方法。

[[UIApplication sharedApplication] setStatusBarHidden:NO]

但它已被弃用。

【讨论】:

它可以工作,但除了被弃用之外,我也无法动画.. =( 啊,很抱歉。我会继续寻找。 我也是!谢谢!

以上是关于设置基于视图控制器的状态栏外观 = YES 时,StatusBar 不会调用 PreferredStatusBarStyle的主要内容,如果未能解决你的问题,请参考以下文章

UIImagePickerController 打破状态栏的外观

快速隐藏状态栏 4

无法使 SFSafariViewController 状态栏样式 lightContent

显示模态视图时使 iPhone 状态栏消失?

在 XCode 8.2 / Swift 3.0 中更改状态栏样式(没有“查看基于控制器的状态栏外观”)

当 hidesBottomBarWhenPushed = YES 状态恢复时,导航控制器不隐藏标签栏