无法隐藏状态栏—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,[重复]的主要内容,如果未能解决你的问题,请参考以下文章