Ios 如何防止状态栏与我的应用程序重叠?

Ios 如何防止状态栏与我的应用程序重叠?,ios,iphone,cordova,ios7,Ios,Iphone,Cordova,Ios7,如何防止我的iPhone应用程序与我的应用程序重叠?我希望应用程序屏幕从状态栏下方开始,就像iOS 7之前的iOS版本一样 下图显示了一个演示应用程序的示例,其中该应用程序被状态栏重叠,标记为蓝色 您可以使用Cordova插件更改状态栏覆盖。您可以在iOS7中的状态栏下方设置以下方法来启动应用程序: StatusBar.overlaysWebView(false); 如果您使用的是phonegap构建,则可以直接包括 或者,您也可以通过将webview偏移20px,在MainViewContr

如何防止我的iPhone应用程序与我的应用程序重叠?我希望应用程序屏幕从状态栏下方开始,就像iOS 7之前的iOS版本一样

下图显示了一个演示应用程序的示例,其中该应用程序被状态栏重叠,标记为蓝色


您可以使用Cordova插件更改状态栏覆盖。您可以在iOS7中的状态栏下方设置以下方法来启动应用程序:

StatusBar.overlaysWebView(false);
如果您使用的是phonegap构建,则可以直接包括

或者,您也可以通过将webview偏移20px,在MainViewController.m中的Objective-C中直接执行此操作:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
    CGRect appView = [self.webView bounds];
    appView.origin.y = 20;
    appView.size.height = appView.size.height - 20;
    self.webView.frame = appView;
}

您可以尝试创建这样的类别

#define SYSTEM_VERSION_OF_DEVICE_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
@implementation UIViewController (iOS7)
{
-(void)viewDidLayoutSubviews
{
    if (!SYSTEM_VERSION_OF_DEVICE_LESS_THAN(@"7.0"))
    {
        CGRect viewBounds=self.view.bounds;
        CGFloat topBarOffset=self.topLayoutGuide.length;
        viewBounds.origin.y=topBarOffset*-1;
        self.view.bounds=viewBounds;
    }
}
@end

我知道您标记了Cordova,但如果您可以访问显示Cordova内容的ViewController,请在viewDidLoad中添加以下内容

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)])
{
    self.edgesForExtendedLayout = UIRectEdgeNone;
}
与其检查系统版本,不如在该版本的iOS中测试功能