当前位置: 首页 > 面试题库 >

在iOS8中使用Swift更改特定ViewController的状态栏颜色

湛宏旷
2023-03-14
问题内容
override func preferredStatusBarStyle() -> UIStatusBarStyle {
 return UIStatusBarStyle.LightContent;
}

对我来说,在任何ViewController中使用以上代码将特定ViewController的statusBar颜色设置为White都
不起作用

。有什么建议?使用UIApplication.sharedApplication方法,颜色会在整个应用程序的Info.plist中进行必要的更改之后更改。

// Change the colour of status bar from black to white
UIApplication.sharedApplication().statusBarStyle = .LightContent

如何仅更改某些必需的 特定ViewController 的状态栏颜色?


问题答案:

阅读所有建议并尝试了一些方法之后,我可以使用以下步骤将此方法用于特定的视图控制器:

第一步:

打开info.plist,然后将名为“ 基于视图控制器的状态栏外观 ” 的新密钥插入 NO。

第二步(仅作说明,无需实施):

通常,我们将以下代码放入AppDelegate的application(_:didFinishLaunchingWithOptions :)方法中,

迅捷2

UIApplication.sharedApplication().statusBarStyle = .LightContent

迅捷3

UIApplication.shared.statusBarStyle = .lightContent

但这 会影响statusBarStyle所有的ViewController。

因此,如何使它适用于特定的ViewController-最后一步:

打开要在其中更改视图控件的文件,statusBarStyle然后将以下代码放入中viewWillAppear()

迅捷2

UIApplication.sharedApplication().statusBarStyle = .LightContent

迅捷3

UIApplication.shared.statusBarStyle = .lightContent

另外,viewWillDisappear()为该特定的viewController 实现方法,并放入以下代码行,

迅捷2

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.Default

}

迅捷3

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    UIApplication.shared.statusBarStyle = UIStatusBarStyle.default
}

此步骤将首先更改statusBarStyle特定ViewController的,然后将其更改回default特定ViewController消失的时间。不执行viewWillDisappear()statusBarStyle永久更改为的新定义值UIStatusBarStyle.LightContent



 类似资料:
  • 在任何ViewController中使用上面的代码将特定ViewController的statusBar颜色设置为白色对我来说在iOS8中是行不通的。有什么建议吗?使用UIApplication.SharedApplication方法,在需要对整个应用程序的Info.plist进行更改后,颜色也会更改。 我如何能够仅仅对某些必需的和特定的ViewControllers的状态栏颜色进行更改?

  • 对于ios 13,我无法设置状态栏的文本颜色。如何查看statusBarManager?如何仅更改文本颜色? 由于: 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因是:“UIApplication上调用了-statusBar或-statusBarWindow的应用程序:由于不再有状态栏或状态栏窗口,必须更改此代码。”。“请使用“场景”窗口上

  • 问题内容: 在XCode 7.3.x中,我用以下方法更改了StatusBar的背景颜色: 但是似乎这在Swift 3.0中不再起作用。 病态尝试: 但这给了我: 有任何想法如何使用XCode8 / Swift 3.0进行更改吗? 问题答案: extension UIApplication { var statusBarView: UIView? { if responds(to: Selector

  • 问题内容: 我正在尝试将状态栏的颜色更改为蓝色或其他某种颜色。 这可能吗,或者Apple不允许吗? 问题答案: 注意:此解决方案在iOS 13及更高版本下失败。 Plist中的第一个设置为 输出屏幕截图如下

  • 在我的一个活动中,我使用更改了工具栏的颜色。但在使用的5.0设备上,颜色是活动主题中的的颜色,所以我有两种非常不同的颜色,看起来不太好。 我意识到在5.0中可以使用,但没有这个功能。 所以我的问题是在5.0中,如何用更改状态栏颜色?

  • 晚上好,伙计们。 我有个问题。我已经心神不定好长时间了。这里我有两个AScreen和BScreen屏幕。对于AScreen,我想要一个带有黑色图标的白色状态栏。对于BScreen,一个红色的状态栏,图标为白色。如何做到这一点?? 当我在屏幕A上时,我使用Flatter_statusbarcolo状态栏为红色,我导航到屏幕B状态栏为白色,但当我返回屏幕A时,状态栏保持白色(屏幕B的颜色)