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

时间:2014-03-22 16:11:13

标签: ios iphone cordova ios7

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

下图显示了一个演示应用示例,其中应用与状态栏重叠,标记为蓝色。

enter image description here

3 个答案:

答案 0 :(得分:2)

您可以使用Cordova插件StatusBarPlugin更改状态栏叠加层。您可以设置以下方法在iOS7的状态栏下方启动应用程序:

StatusBar.overlaysWebView(false);

如果您使用的是phonegap-build,则可以直接添加StatusBarPlugin

或者您也可以通过将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;
}

答案 1 :(得分:0)

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

#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

答案 2 :(得分:0)

我知道您标记了Cordova但是如果您有权访问ViewController,则显示Cordova内容,然后在viewDidLoad中添加以下内容。

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)])
{
    self.edgesForExtendedLayout = UIRectEdgeNone;
}

您应该测试该版本iOS中的功能,而不是检查系统版本。