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

更改XCode 8.2/Swift 3.0中的状态栏样式(无“基于视图控制器的状态栏外观”)

谭繁
2023-03-14

我正在尝试修改状态栏的外观(将文本设置为白色/将样式设置为“灯光”)。通过将其添加到AppDelegate中,我成功地设置了背景色。swift文件:

let statWindow = UIApplication.shared.value(forKey:"statusBarWindow") as! UIView
let statusBar = statWindow.subviews[0] as UIView
statusBar.backgroundColor = UIColor(red: 0/255.0, green: 0/255.0, blue: 0/255.0, alpha: 1.0)

但是,当我去更改状态栏的文本样式时,甚至在一般情况下更改此样式

我还试图通过nfo.plist修改状态栏,但是没有“基于视图控制器的状态栏外观”字段(见第二张图片)。此外,状态栏样式选项下没有“轻”样式选项(见下图):

共有3个答案

常经赋
2023-03-14

斯威夫特3

如果基于视图控制器的状态栏外观在信息中为“是”。普利斯特

然后对所有NavigationController使用此扩展

    extension UINavigationController
    {
        override open var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
         }
     }

如果没有UINavigationController,只有UIViewController,则使用以下代码:

    extension UIViewController
    {
        override open var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
         }
     }

目标c

创建类别类

对于UIViewController

在UIViewController StatusBarStyle中。H

 @interface UIViewController (StatusBarStyle)
 @end

在UIViewController StatusBarStyle. m

 #import "UIViewController+StatusBarStyle.h"

 @implementation UIViewController (StatusBarStyle)

 -(UIStatusBarStyle)preferredStatusBarStyle {
  return UIStatusBarStyleLightContent;
 }

 @end 

对于UINavigationController

在UINavigationController StatusBarStyle中。H

 @interface UINavigationController (StatusBarStyle)
 @end

在UINavigationController StatusBarStyle. m

 #import "UINavigationController+StatusBarStyle.h"

 @implementation UINavigationController (StatusBarStyle)

 -(UIStatusBarStyle)preferredStatusBarStyle {
  return UIStatusBarStyleLightContent;
 }

 @end  
吉鸿宝
2023-03-14

在应用程序的每个UIViewController中,都应该覆盖preferredStatusBarStyle属性:

override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }

最后,打电话:

<your controller>.setNeedsStatusBarAppearanceUpdate()

如果此状态栏样式贯穿整个应用程序,则应创建一个实现此功能的BaseViewController类,并使所有视图控制器从BaseViewController继承。

翟嘉祥
2023-03-14

你错过的一步是信息。普利斯特。

打开应用的info.plist文件,并将UIViewControlllerBasedStatusBar外观设置为NO(如下所示)。

注意:如果此键尚未出现,可以通过以下方式添加:

1) 将鼠标悬停在现有条目上可显示添加/删除图标:

2) 单击加号图标添加新的密钥/值对:

3) 将UIViewControllerBasedStatusBarAppearance粘贴到键字段中,并将其值设置为NO。注意:按键将变为查看基于控制器的状态 当取消选择时,但它是一样的:

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

  • 我在iOS应用程序中实现了一个导航栏,我将淡色设置为白色,但在运行应用程序时,状态栏不跟随淡色,只是透明的(见图)。我的目标是状态栏有半透明的风格。 怎么解决这个问题?

  • 标题说明了一切。或者我在理解sdk时有一些非常错误的地方,或者苹果的sdk有一些非常错误的地方。 设置(info.plist)基于视图控制器的状态时..=是的,我可以通过调用setNeedsStatusBarEtc来隐藏我的状态栏动画等等。。。但是,我不能改变我喜欢的风格。当我将其设置为“否”时,我可以更改样式,但不能更改所有其他内容。。我该怎么办?怎么了?请帮帮我! 当基于控制器的状态...=Y

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

  • 我正在尝试更改其中一个ViewController的状态栏样式。我把这个 在plist中将基于视图的状态栏设置为“是” 2. 还补充了这一点 [自设置需求状态栏外观更新] 它可以工作,也就是说,我可以看到字体颜色为白色,但过了一段时间,它又变回了以前的类型。。

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