【问题标题】:Xcode Hide white status bar ios 10Xcode隐藏白色状态栏ios 10
【发布时间】:2017-05-30 23:07:11
【问题描述】:

我想在我的应用程序中使用白色状态栏。为此,我将View controller-based status bar appearance 设置为NO,将Status bar style 设置为UIStatusBarStyleLightContent。但现在我需要在一些视图控制器中隐藏状态栏。要隐藏它,我必须将View controller-based status bar appearance 设置为YES 并添加- (BOOL)prefersStatusBarHidden {return YES;}。但是状态栏现在是黑色的。当View controller-based status bar appearanceYES 时为黑色,如果NO 为白色。那么问题来了,如何设置白色状态栏并隐藏呢?

更新: VC 中我想要白色状态栏的代码(prefferdSTatusBarStyle 未调用)

VC 中隐藏状态栏的代码

.plist 设置

结果是黑色状态栏,隐藏在某些VC中

UPD2:

我知道使用不推荐使用的方法很糟糕,但是使用[[UIApplication sharedApplication] setStatusBarHidden:YES]; 一切都可以按我的意愿进行。如果有人有更好的解决方案,请告诉我。

【问题讨论】:

  • 您必须在项目的每个视图控制器中显示“UIStatusBarStyleLightContent”吗?
  • 是的。所有视图控制器都应带有白色状态栏
  • 你找到解决办法了吗?

标签: ios objective-c xcode ios10 statusbar


【解决方案1】:

这是快速版本:

要隐藏状态栏或更改其外观,您需要在视图控制器本身中覆盖以下属性

override var prefersStatusBarHidden: Bool{
        return true
}

如果您想将其设置为白色,上面会隐藏状态栏和下方:

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
}

【讨论】:

    【解决方案2】:

    在您的 plist 文件中添加 View controller-based status bar appearance Bool 属性并将其设置为 YES。

    现在在您的视图控制器中添加如下方法:

    // TO MAKE STATUS BAR WHITE
    override func preferredStatusBarStyle() -> UIStatusBarStyle {
            return .LightContent
    }
    
    // TO MAKE STATUS BAR BLACK
    override func preferredStatusBarStyle() -> UIStatusBarStyle {
            return .LightContent
    }
    
    // RETURN TRUE TO HIDE AND FALSE TO SHOW STATUS BAR
    override func prefersStatusBarHidden() -> Bool {
            return true
    }
    

    对于Objective-C

    - (BOOL)prefersStatusBarHidden {
        return NO;
    }
    
    -(UIStatusBarStyle)preferredStatusBarStyle {
        return UIStatusBarStyleLightContent;
    }
    

    要删除冗余代码,您可以将BaseViewController 作为UIViewController 的子类,并在该类中添加方法。并覆盖类中需要更改的方法。

    【讨论】:

    • 不知道出了什么问题,但是当我这样做时,我的状态栏是黑色的,preferredStatusBarStyle 没有被调用。 prefersStatusBarHidden 工作
    • @Ossir 你是否在 plist 中将 bool 设置为 YES?
    • 是的。 prefersStatusBarHidden 有效,preferredStatusBarStyle 无效
    • @Ossir 确保该方法没有被其他任何地方覆盖?
    • 是的。我在我的项目中搜索过,只有一个结果
    【解决方案3】:

    你可以使用xcode设置状态栏样式为“light”

    【讨论】:

    • 您对状态栏的 info.plist 文件进行了哪些更改?
    • 只有View controller-based status bar appearance 设置为YESStatus bar style 设置为UIStatusBarStyleLightContent。但是状态栏现在是黑色的
    • 您必须将基于视图控制器的状态栏外观设置为“否”
    • 如果我设置为NO,我将无法使用prefersStatusBarHidden隐藏状态栏
    • 你试过这个代码吗? - (UIStatusBarStyle)preferredStatusBarStyle { 返回 UIStatusBarStyleLightContent; }
    【解决方案4】:

    如果您的视图控制器嵌入在 UInavigationController 中,请尝试在您的

    中编写此代码
    -(BOOL)prefreStatusBarHidden
    {
           return [self.navigationController prefersStatusBarHidden];
    }
    

    【讨论】:

      【解决方案5】:

      您可以通过在基本视图控制器中设置导航背景图像来做到这一点。

      UIImage *bgImage = [UIImage imageNamed:@"bg_navigationbar"];
      [self.navigationController.navigationBar setBackgroundImage:bgImage forBarMetrics:UIBarMetricsDefault];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-25
        • 2017-03-20
        • 1970-01-01
        • 1970-01-01
        • 2017-11-23
        • 2015-05-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多