Ios7 如何隐藏iOS状态栏

Ios7 如何隐藏iOS状态栏,ios7,show-hide,statusbar,Ios7,Show Hide,Statusbar,在我的iOS视频应用程序中,状态栏隐藏在某些视图控制器中。我已经使用以下代码完成了这项工作 [[UIApplication sharedApplication] setStatusBarHidden:YES]; 它适用于iOS 5和iOS 6,但不适用于iOS 7 我试过使用这个视图控制器 例如: 它工作得很好,但我无法在父视图控制器中再次显示状态栏 您应该将此值添加到plist:“查看基于控制器的状态栏外观”并将其设置为“否” 要在iOS7中隐藏状态栏,请执行以下操作: 打开plist文

在我的iOS视频应用程序中,状态栏隐藏在某些视图控制器中。我已经使用以下代码完成了这项工作

[[UIApplication sharedApplication] setStatusBarHidden:YES];
  • 它适用于iOS 5和iOS 6,但不适用于iOS 7

  • 我试过使用这个视图控制器

例如:


它工作得很好,但我无法在父视图控制器中再次显示状态栏

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


要在iOS7中隐藏状态栏,请执行以下操作:


打开plist文件,然后添加一个名为“查看基于控制器的状态栏外观”的添加行,并在plist中将其值设置为
NO

,添加以下属性

Status bar is initially hidden = YES

View controller-based status bar appearance = NO
现在状态栏将隐藏。

试试看

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

要在iOS7中隐藏状态栏,需要两行代码

  • 在应用程序中:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项写入

     [[UIApplication sharedApplication] setStatusBarHidden:YES];
    
  • 在info.plist中添加此

     View-Controller Based Status Bar Appearance = NO
    

  • 在viewdidload中添加以下行

      [[UIApplication sharedApplication] setStatusBarHidden:YES
                                            withAnimation:UIStatusBarAnimationFade];
    
    并添加新方法

      - (BOOL)prefersStatusBarHidden {
              return YES;
      }
    
    同时更改info.plist文件 基于视图控制器的状态栏外观“=否


    UIKit
    UIApplication.h
    ,它可以为我工作:

    // Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
    @property(nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden;
    - (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);
    

    因此,应将“查看基于控制器的状态栏外观”设置为“否”,并在Info.plist中添加以下内容:

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

    试试这个简单的方法:
    目标C:
    斯威夫特:
    为了更好地理解,请添加一些带有注释的照片:

    应用程序在任何更改之前

    在名为
    支持文件的
    项目导航器
    文件夹中找到,然后单击*.plist文件

    之后,您将显示应用程序的不同设置。您需要添加两个键
    UIStatusBarHidden
    UIViewControllerBasedStatusBarAppearance
    。只需单击+按钮即可完成此操作

    按+后,您可以选择其中一个键-只需开始键入即可

    正确版本:

    最后,应用此更改后的应用程序:


    此外,您还可以找到替代解决方案

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

    我做了以下操作,它似乎可以工作(即使在iOS 8中):


    要回答Susitha的问题,请使用设置需要StatusBarAppearanceUpdate。这将调用prefersStatusBarHidden以刷新所需的状态栏状态。请尝试以下操作:

        @property (nonatomic, getter=isHideStatusBar) BOOL hideStatusBar; // Give this a default value early
    
        - (BOOL)prefersStatusBarHidden {
            return self.isHideStatusBar;
        }
    
        - (void)someMethod {
        // triggered by an event or user action
        [self setHideStatusBar:YES];
        [self setNeedsStatusBarAppearanceUpdate];
        }
    
    如果要再次查看状态栏,请将属性hideStatusBar(或您所称的任何内容)设置为NO。通过再次调用来间接调用preferStatusBarHidden

    [self setNeedsStatusBarAppearanceUpdate]
    
    以下是Swift版本(iOS9之前):

    这同样有效(iOS7+):

    您还需要拨打:

    setNeedsStatusBarAppearanceUpdate()
    
    在say
    viewDidLoad()

    请注意,如果您使用SplitView控制器或其他
    容器
    视图控制器,您还需要让它在发送
    childViewControllerForStatusBarHidden
    时返回您的类。一种方法是为say
    statusController
    使用公共弱变量,并使用此重写方法返回它。

    • UIApplication.setStatusBarX自iOS9起已被弃用
    • 不推荐在info.plist中使用UIViewControllerBasedStatusBarAppearance=NO
    • 因此,我们应该在所有视图控制器中使用preferredStatusBarX
    但当涉及到UINavigationController时,它会变得更有趣:

    • 如果navigationBarHidden=true,则调用子UIViewController的preferredStatusBarX,因为该子级正在状态栏下显示内容
    • 如果navigationBarHidden=false,则在UINavigationController的preferredStatusBarX显示状态栏下的内容后,将调用它
    • UINavigationController的默认preferredStatusBarStyle使用UINav.navigationBar.barStyle中的值。默认值=黑色状态栏内容。黑色=白色状态栏内容
    • 因此,如果要将BarIntColor设置为某种自定义颜色(可能是),还需要将barStyle设置为.Black以获取白色状态栏内容。在设置BarIntColor之前,我会将barStyle设置为黑色,以防barStyle覆盖BarIntColor
    • 另一种选择是,您可以将UINavigationController子类化,而不必使用条样式

    • 但是,如果您将UINavigationController子类化,那么如果navigationBarHidden=true,您将无法控制状态栏。在这种情况下,UIKit会在不询问UINavigationController的情况下直接访问子UIViewController。我本以为UINavigationController应该负责询问子UIViewControllerong>在iOS中隐藏状态栏的步骤
      1.打开AppDelegate.m文件,添加application.statusBar隐藏在didFinishLaunchingWithOptions方法中

       - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
          // Override point for customization after application launch.
          application.statusBarHidden = YES;
          return YES;
          }
      
    • 打开info.plist并设置

    • 查看基于控制器的状态栏外观
      设置

      iOS 9以后的版本:

      由于
      statusBarHidden
      方法已被弃用iOS9您需要在plist中添加两个值,如下所示:

      <key>UIStatusBarHidden</key>
      <true/>
      <key>UIViewControllerBasedStatusBarAppearance</key>
      <false/>
      
      UIStatusBarHidden
      UIViewControllerBasedStatusBarAppearance
      
      或通过用户界面,请参照下图:

      由于
      statusBarHidden
      已从iOS9弃用

      @属性(读写,非原子,getter=isStatusBarHidden)BOOL statusBarHidden NS不推荐使用的IOS(2\u 0,9\u 0,“使用-[UIViewController 优先状态栏隐藏])(禁止使用电视


      在iOS10中,我需要做的就是覆盖我的
      RootViewController
      (Swift)中的
      prefersStatusBarHidden
      var:

      Swift 3的更新:

      更新信息.p
      [self setNeedsStatusBarAppearanceUpdate]
      
      override func viewWillAppear(animated: Bool) {
          super.viewWillAppear(animated)
          UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
      }
      
      override func viewWillDisappear(animated: Bool) {
          super.viewWillDisappear(animated)
          UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
      }
      
      override func prefersStatusBarHidden() -> Bool {
          return true
      }
      
      setNeedsStatusBarAppearanceUpdate()
      
       - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
          // Override point for customization after application launch.
          application.statusBarHidden = YES;
          return YES;
          }
      
      <key>UIStatusBarHidden</key>
      <true/>
      <key>UIViewControllerBasedStatusBarAppearance</key>
      <false/>
      
      override var prefersStatusBarHidden: Bool {
          return true
      }
      
       private var isStatusBarHidden = true {
              didSet {
                  setNeedsStatusBarAppearanceUpdate()
              }
          }
      
          override var prefersStatusBarHidden: Bool {
              return isStatusBarHidden
          }