无法隐藏状态栏—Swift 3,[重复]

Posted

技术标签:

【中文标题】无法隐藏状态栏—Swift 3,[重复]【英文标题】:Can't Hide Status Bar—Swift 3, [duplicate] 【发布时间】:2016-12-17 00:07:58 【问题描述】:

我通常用

隐藏状态栏
override func prefersStatusBarHidden() -> Bool 
    return true

但是 Xcode 给了我一个错误,说“方法没有覆盖它的超类中的任何东西”。

如果我删除override,Xcode 会给出不同的错误:“方法 'prefersStatusBarHidden()' 与 Objective-C 选择器 'prefersStatusBarHidden' 与来自超类 'UIViewController' 的 'prefersStatusBarHidden' 的 getter 与相同的 Objective-C 冲突选择器”


我还在 Target 的常规设置中选中了“隐藏状态栏”:

但状态栏仍然显示。


我在另一个 Stack Overflow 答案中找到了这个方法

UIApplication.shared.setStatusBarHidden(true, with: .none)

但这也不会隐藏状态栏。


在 Xcode 8 Beta 1 中,我使用了第一种和第二种方法,它们可以隐藏状态栏(第一种方法没有返回错误)。我现在可以用 Xcode 8 Beta 4 做什么来隐藏状态栏?

注意:状态栏显示在模拟器设备和物理设备上,均运行 ios 10。

【问题讨论】:

查看这个答案***.com/a/31129671/5109911 @SaintThread 谢谢,但请参阅我关于为什么使用 func prefersStatusBarHidden 不起作用的问题的第一部分。还有其他想法吗? @matt 我不认为这是重复的,因为该答案明确涉及界面方向,这与我在这里谈论的不同。它也没有涵盖这里提到的get return true ,也没有涵盖对我来说失败的其他类型的方法。只是不够完整,无法回答我的问题。 @JohnRamos 你有没有阅读我的回答?碰巧 question 是关于界面方向的,但我的 answer 完全涵盖了您的情况,解释了 Swift 3 Xcode 8 seed 4 中发生了什么变化(即某些视图控制器方法是现在您作为属性覆盖的属性)。我的回答非常完整并且明确包含prefersStatusBarHidden @KrisRoofe 好吧,我的错。很酷的东西。 【参考方案1】:

我们需要在 Swift 3 上覆盖属性本身(这是 Xcode 8 Beta 4 中的新功能):

override var prefersStatusBarHidden: Bool   
    return true  
  

更新 Swift 5+

override var prefersStatusBarHidden: Bool  true 

再举一个例子,你也可以得到here和here

有关此更改是什么以及为什么需要更改的更多信息,请参阅Matt's great answer on this。

【讨论】:

@JohnRamos - 很高兴听到...... 你如何在 Objective-C 中做到这一点? @omarojo 对象 C:***.com/questions/26146012/… 只使用覆盖 var prefersStatusBarHidden: Bool return true 如果您需要进行更改,请隐藏状态栏...在完成某事时说 - 例如动画。在完成块中,只需执行 UIApplication.shared.isStatusBarHidden = true => 这将适用于 Swift 3

以上是关于无法隐藏状态栏—Swift 3,[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在滚动视图中动态隐藏状态栏时滞后/屏幕冻结(Swift 3)

如何在swift中逐渐隐藏状态栏

swift3.0 顶部状态栏隐藏

如何在Swift iOS应用程序中隐藏状态栏?

如何在 Swift iOS 应用程序中隐藏状态栏?

Swift/iOS 8,当 prefersStatusBarHidden() 设置为 true 时,状态栏不隐藏