2013-10-03 69 views
0

正如我确信你们都知道,苹果已经改变了状态栏在iOS7中的工作方式,这导致了与cordova/phonegap应用程序的各种令人头疼的问题。如何更改iOS7 phonegap/cordova应用中状态栏的webview背后的背景颜色?

我已经设法通过20像素推视图下来,如果设备运行iOS7使用以下代码:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { 
    [application setStatusBarStyle:UIStatusBarStyleLightContent]; 
    // handling statusBar (iOS6) by leaving top 20px for statusbar. 
    screenBounds.origin.y = 20; 
    self.window = [[UIWindow alloc] initWithFrame:screenBounds]; 
} 
else { 
    self.window = [[UIWindow alloc] initWithFrame:screenBounds]; 
} 

的问题是,在20像素的间隙,该代码创建了具有黑色的背景像这样的:

Black status bar with white text

我如何改变我的代码创造了这个空间的背景色?

在我的MainViewController.xib中,背景颜色设置为白色。这个黑色背景颜色属性来自哪里?

这里是我的MainViewController.xib属性:你实际使用PhoneGap的

MainViewController.xib attributes

非常感谢

回答

0

我想你需要使用CSS来添加页边距UIWebView的顶部,而不是移动UIWebView。

试试这个:

function onDeviceReady() { 
    if (parseFloat(window.device.version) === 7.0) { 
     document.body.style.marginTop = "20px"; 
    } 
} 

document.addEventListener('deviceready', onDeviceReady, false); 
+0

是的,我使用的科尔多瓦3.0。我使用这个JavaScript代码,但它不适用于绝对定位的元素。我想找到一个本地解决方案,这样我就不必根据操作系统版本不断地添加有条件的绝对定位元素。我刚刚在iPhone 5上运行我的应用程序,它的行为与模拟器不同;该视图不会被按下20px,并且背景是白色的。 – remondo

+0

所以它在模拟器中只有一个问题? –

+0

iOS7模拟器显示状态栏的方式与iOS6相同,即黑色背景,白色文本,除了我希望黑色背景为白色外,其他都是正确的。在设备上,我的代码向下推视图被忽略,状态栏是透明的并覆盖视图,但这是一个不同的问题! – remondo