在我的iOS视频应用中,状态栏隐藏在一些视图控制器中。我已经使用以下代码做到了这一点。

[[UIApplication sharedApplication] setStatusBarHidden:YES];

它适用于iOS 5和iOS 6,但不适用于iOS 7。 我在特定的视图控制器中尝试了这个,

Eg:

-(BOOL)prefersStatusBarHidden { return YES; }

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


当前回答

在viewdidload中添加以下行

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

并添加新方法

  - (BOOL)prefersStatusBarHidden {
          return YES;
  }

同时更改信息。plist文件 查看基于控制器的状态栏外观" = NO

这对我很有用

其他回答

iOS中隐藏状态栏的步骤 1. AppDelegate开放。M文件,添加应用程序。statusbar隐藏在didFinishLaunchingWithOptions方法中

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    application.statusBarHidden = YES;
    return YES;
    }

开放的信息。Plist和set

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

固定解决方案SWIFT 3+ (iOS 9, 10)

1-在信息。请在属性下面设置

2-粘贴下面的代码到根控制器,以

 private var isStatusBarHidden = true {
        didSet {
            setNeedsStatusBarAppearanceUpdate()
        }
    }

    override var prefersStatusBarHidden: Bool {
        return isStatusBarHidden
    }

你可以调用isStatusBarHidden = true和isStatusBarHidden = false来隐藏/显示状态栏

我做了以下操作,它似乎是有效的(即使在iOS 8中):

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }
}

- (BOOL)prefersStatusBarHidden {
    return YES;
}

Swift 3更新:

更新信息。请输入以下信息:

基于视图控制器的状态栏外观:NO

然后,在ViewController或其他地方:

isstatusbarhidden = true

从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);

所以应该将基于视图控制器的状态栏外观设置为NO