iOS:以编程方式隐藏整个应用中的状态栏,甚至不通过plist

时间:2013-11-26 12:04:48

标签: iphone objective-c ios7 statusbar

我想隐藏整个应用中的状态栏。

我也知道,我们可以这样做:

set the key value "View controller-based status bar appearance" NO in plist.

但是我只需要为iOS 7做同样的事情,所以当然需要OS版本的一些条件,据我所知,我们不能在.plist文件中应用任何条件。

所以任何人都可以建议一些只隐藏iOS 7状态栏的代码。

感谢您的回复。

3 个答案:

答案 0 :(得分:6)

//Checking iOS version
 float versionOS;
 versionOS=[[[UIDevice currentDevice] systemVersion] floatValue];
  if(versionOS>=7.0)
   {
         [UIApplication sharedApplication].statusBarHidden = YES
   }  

将此代码添加到application didFinishLaunchingWithOptions方法。

答案 1 :(得分:5)

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

- (BOOL)prefersStatusBarHidden {
    return YES;
}

这不会打扰任何低于7的ios,因为它只在ios7中调用。

答案 2 :(得分:2)

我发现在整个应用程序中隐藏状态栏的最简单方法是在UIViewController上创建一个类别并覆盖prefersStatusBarHidden。这样您就不必在每个视图控制器中编写此方法。

的UIViewController + HideStatusBar.h

#import <UIKit/UIKit.h>

@interface UIViewController (HideStatusBar)

@end

的UIViewController + HideStatusBar.m

#import "UIViewController+HideStatusBar.h"

@implementation UIViewController (HideStatusBar)

//Pragma Marks suppress compiler warning in LLVM. 
//Technically, you shouldn't override methods by using a category, 
//but I feel that in this case it won't hurt so long as you truly 
//want every view controller to hide the status bar. 
//Other opinions on this are definitely welcome

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

#pragma clang diagnostic pop


@end
相关问题