【问题标题】:How to hide a status bar in iOS?如何在 iOS 中隐藏状态栏?
【发布时间】:2012-09-21 13:54:26
【问题描述】:

我可以在我的应用中隐藏状态栏:

- (void)viewDidLoad{
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    [super viewDidLoad];
    }

当我选择我的启动图像并第一次启动它时,它是图片上方的状态栏。我该如何隐藏这个?

【问题讨论】:

  • 我创建了一个BaseViewController 并将此代码添加到它的viewDidLoad。这确保我将它应用于我的所有视图控制器。我还在Info下添加了View controller-based status bar appearanceNO

标签: ios statusbar


【解决方案1】:

您需要将此代码添加到您的 AppDelegate 文件中,而不是您的根视图控制器中

或者在你的 plist 文件中添加属性状态栏最初是隐藏的

伙计们,在 iOS 7+

请将此添加到您的 info.plist 文件中,它会有所作为 :)

UIStatusBarHidden UIViewControllerBasedStatusBarAppearance

适用于 iOS 11.4+ 和 Xcode 9.4+

在您的一个或所有视图控制器中使用此代码

覆盖 var prefersStatusBarHidden: Bool { 返回真}

【讨论】:

  • 这不适用于我在 iOS 11.4 + Xcode 9.4 beta 上。
【解决方案2】:

将以下代码添加到您的视图控制器:

if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
    // iOS 7
    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
} else {
    // iOS 6
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}

- (BOOL)prefersStatusBarHidden {
    return YES;
}

【讨论】:

  • 必须向 Infor.plist 添加一个键 UIViewControllerBasedStatusBarAppearance 并将值设置为 YES。然后可以隐藏/显示状态栏。
  • 我应该在视图控制器的哪个部分添加 if-else 语句?
  • 讨厌 iOS!为什么我们需要在 Simulated Metrics 中**cking Status Bar 属性????
【解决方案3】:

这对我有帮助(更改 plist 文件):

  1. 设置状态栏最初隐藏=YES
  2. 添加行:查看基于控制器的状态栏外观 = 否

【讨论】:

    【解决方案4】:

    将此代码放入隐藏状态栏的视图控制器中:

    - (BOOL)prefersStatusBarHidden {return YES;}
    

    【讨论】:

    • 注意,这仅适用于 ios7:- (BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0);
    【解决方案5】:

    在 iOS 7 中状态栏的外观取决于 UIViewController 作为默认值。要全局隐藏状态栏,在info.plist 中使用NO 值作为UIViewControllerBasedStatusBarAppearance 键并使用UIApplicationsetStatusBarHidden 方法和YES BOOL 值。

    【讨论】:

    • 在我的游戏左下角有一个白球。我怎样才能删除它?
    • 在您使用 UIImagePickerController 时不起作用。每当您显示状态栏时,它都会显示状态栏,并且状态栏永远不会隐藏...
    • 即使我给出的解决方案也没有几次,我认为它是一个错误。
    • 为了隐藏状态栏,我使用了 setStatusBarHidden = YES
    • @Jon 答案是肯定的,但我猜是编辑弄错了。
    【解决方案6】:

    从“info.plist”的下拉列表中添加此键,瞧,您将不会再看到包含 GSM、wifi 图标等元素的顶部栏。

    【讨论】:

      【解决方案7】:

      它对我有用,

      将以下代码添加到 info.plist 文件中,

       <key>UIStatusBarHidden</key>
       <false/>
       <key>UIViewControllerBasedStatusBarAppearance</key>
       <false/>
      

      希望这对某些人有用。

      【讨论】:

        【解决方案8】:

        info.plist

        View controller-based status bar appearance NO
        Status bar is initially hidden YES
        

        view controller.m

        - (BOOL) prefersStatusBarHidden
        {
            return YES;
        }
        

        【讨论】:

        • 我想要一个方便的注释...我几乎每周都会访问此链接一次以复制代码 sn-p...然后我必须搜索所有不同的答案。
        【解决方案9】:

        我支持 iOS 5、6 和 7。我的应用仅适用于 iPad。我需要使用以下所有内容:

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
        

        视图控制器:

        - (BOOL)prefersStatusBarHidden{ return YES; }
        

        Info.plist

            <key>UIStatusBarHidden</key>
            <string>YES</string>
        
            <key>UIStatusBarHidden~ipad</key>
            <true/>
        
            <key>UIViewControllerBasedStatusBarAppearance</key>
            <string>NO</string>
        

        【讨论】:

          【解决方案10】:

          只需选中 Targets/Summary iPad Deployment Info 上的复选框,您的状态栏就会消失。 它适用于我的应用程序。

          【讨论】:

          【解决方案11】:

          我遇到了同样的问题,但它很容易解决!只需设置

          status bar is initially hidden = YES
          

          然后通过点击文本status bar is initially hidden后面的加号添加一行,然后将文本设置为

          view controller-based status bar appearance
          

          通过单击箭头,并将其设置为NO

          希望这会有所帮助!

          【讨论】:

            【解决方案12】:

            我最简单的方法是在 .m 文件中输入以下内容。

            - (BOOL) prefersStatusBarHidden
            {
                return YES;
            }
            

            这应该可行!

            【讨论】:

              【解决方案13】:
              -(void) viewWillAppear:(BOOL)animated
              {
                   [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
              }
              

              【讨论】:

              • 这个答案被标记为低质量,你能更新你的答案来描述为什么这样有效吗?
              【解决方案14】:

              一个完整的解决方案,在您的视图控制器中

              // you can use your own logic to determine if you need to hide status bar
              // I just put a var here for now
              var hideStatusBar = false
              override func preferStatusBarHidden() -> Bool {
                  return hideStatus
              }
              
              
              // in other method to manually toggle status bar
              func updateUI() {
                  hideStatusBar = true
                  // call this method to update status bar
                  prefersStatusBarHidden()
              }
              

              【讨论】:

              • 从 Xcode 8.1 开始,似乎没有函数 preferStatusBarHidden 可以覆盖。相反,ViewController 中的“let preferStatusBarHidden : Bool = true”行为我做了。问候。
              【解决方案15】:

              要以编程方式隐藏每个单独的视图控制器的状态栏,请使用以下两个过程中的任何一个:

              程序1:

              [UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
              

              程序2:

              -(BOOL)prefersStatusBarHidden {
                  return YES;
              }
              

              要隐藏整个应用程序的状态栏,我们应该遵循以下步骤:

              您应该将此值添加到 plist:“查看基于控制器的状态栏外观”并将其设置为“否”。

              Click here to view screenshot

              【讨论】:

                猜你喜欢
                • 2013-09-29
                • 2013-11-18
                • 2014-04-14
                • 1970-01-01
                • 2017-03-20
                • 2016-01-03
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多