无法隐藏iOS7中的状态栏

Mel*_*ram 267 objective-c statusbar ios7

我刚刚将iPhone 5 iOS 7升级到四个测试版.现在当我在这款iPhone上从Xcode 5运行我的应用程序时,状态栏不会隐藏,即使它应该.

不工作:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
Run Code Online (Sandbox Code Playgroud)

不工作:

[UIApplication sharedApplication].statusBarHidden = YES;
Run Code Online (Sandbox Code Playgroud)

无法登录Apple Developer论坛

sat*_*tgi 557

在您的应用程序plist文件中添加一行称为"查看基于控制器的状态栏外观"并将其设置为NO

请注意,如果您在应用程序中使用UIImagePickerController,这根本不起作用.

http://www.openfl.org/developer/forums/general-discussion/iphone-5ios-7-cant-hide-status-bar/,mgiroux的解决方案

将View Base Controller添加到Xcode中的Info设置的示例

  • 这种方法的唯一问题是如果你使用UIImagePickerController来选择图像,它会强制状态栏再次出现.防止这种情况的唯一可靠方法是在每个视图控制器中实现prefersStatusBarHidden方法并重置UIViewControllerBasedStatusBarAppearance plist设置为true. (55认同)
  • 您还需要将"状态栏最初隐藏"设置为**YES**. (17认同)
  • 作为参考,存储在实际Info.plist文件中的原始值称为"UIViewControllerBasedStatusBarAppearance". (12认同)
  • 我真的不知道为什么Apple改变了这一点!谢谢 :) (5认同)
  • 惊人!我浪费了几个小时!谢谢! (3认同)

inv*_*doo 277

在视图控制器中添加方法.

- (BOOL)prefersStatusBarHidden {
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

  • 对于所有想看的人,如果要在某些视图中动态删除状态栏,可以使用此方法.无论您在plist中设置"查看基于控制器的状态栏外观",此方法都有效! (35认同)
  • @ Mr.T在iOS 8中,似乎不再是这种情况.如果您已将基于视图控制器的状态栏外观设置为NO并从视图控制器中的`prefersStatusBarHidden`返回true,则它将无法工作.状态栏仍然显示. (4认同)
  • +1 b/c我正在寻找动态显示/隐藏状态栏的功能.然而,P列表设置方法(参见上面的@Satgi帖子)是全局显示/隐藏状态栏的最佳方式. (2认同)

小智 84

在Plist中添加以下属性.

- > Status bar is initially hidden=是

- > View controller-based status bar appearance= NO

添加两者 - 现在状态栏将消失.

  • 这就是最终为我工作的感谢! (2认同)

小智 53

要在单个视图上隐藏状态栏,您应该使用:

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

起初,这对我不起作用,然后在此方法的文档中看到://如果您的应用程序使用默认的基于UIViewController的状态栏系统,则设置statusBarHidden不会执行任何操作.

这必须在plist文件上完成,将密钥View controller-based status bar appearance集添加到NO.然后它奏效了.


jar*_*air 16

要使用旧版UIApplication方法隐藏/显示状态栏,您的应用必须为iOS 7设置plist值:

View-Controller Based Status Bar Appearance = NO

默认情况下,此值设置为YES.如果将其更改为NO,则可以使用旧方法.如果将其设置为YES,您仍然可以隐藏状态栏,但应由应用程序中的每个视图控制器子类覆盖:prefersStatusBarHidden返回YES.

只要您的应用需要状态栏外观或可见性更改,并且基于视图控制器的状态栏外观设置为YES,您的最外层视图控制器需要调用:

setNeedsStatusBarAppearanceUpdateAnimation


Sha*_*yaz 16

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

  1. inapplication:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    [application setStatusBarHidden:YES];
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在info.plist中添加这个

    View-Controller Based Status Bar Appearance = NO
    
    Run Code Online (Sandbox Code Playgroud)

  • 只是为了清理它,如果你把它放在didFinishLaunching中你可以写`[application setStatusBarHidden:YES];`或`application.statusBarHidden = YES;` (2认同)

Sal*_*uts 11

针对此问题建议的组合很多,但问题是iOS 6和7使用不同的方法来隐藏状态栏.我从未成功设置plist设置以在iOS 7上启用iOS6风格的行为,但如果您要构建应用程序以支持iOS 6+,则需要一次使用3个方法以确保特定视图控制器隐藏状态酒吧:

// for ios 7 
- (BOOL)prefersStatusBarHidden{
    return YES;
}

// for ios 6
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    // explicitly set the bar to show or it will remain hidden for other view controllers
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}
Run Code Online (Sandbox Code Playgroud)

无论您的plist设置如何,这都应该有效.


小智 7

我必须在下面进行两项更改才能隐藏状态栏:

将此代码添加到要隐藏状态栏的视图控制器中:

- (BOOL)prefersStatusBarHidden
{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

将其添加到.plist文件中(转到应用程序设置中的"信息")

View controller-based status bar appearance --- NO
Run Code Online (Sandbox Code Playgroud)

然后你可以调用这一行来隐藏状态栏:

[[UIApplication sharedApplication] setStatusBarHidden:YES];
Run Code Online (Sandbox Code Playgroud)


小智 6

只需在info.plist文件中添加这两行.它将修复iOS7和旧版本.

  • 状态栏最初隐藏= YES
  • 查看基于控制器的状态栏外观= NO

导航到项目并选择Targets - > General,然后选中"状态栏样式...在应用程序启动期间隐藏"复选框.这会奏效.


Raj*_*han 6

试试这个简单的方法:

- (void)viewWillAppear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

- (void)viewWillDisappear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}
Run Code Online (Sandbox Code Playgroud)