在将 Phonegap 从 2.3.0 更新到 2.5.0 后,我的 iOS/iPhone 应用程序中的启动画面在应用程序启动期间向下移动了 20 像素。首先,它将自己定位在状态栏的后面,但很快又下降了 20 像素。这也发生在 Phonegap 默认模板中。在以前的 Phonegap 版本中,我没有遇到这个问题。我该如何解决?
4 回答
如果我包含了我想做的状态栏,我在 20px 移位时遇到了同样的问题。为了解决这个问题,我编辑了文件 CDVSplashScreen.m 并更改了以下行:
_imageView.frame = CGRectMake(0, 0, _imageView.image.size.width, _imageView.image.size.height);
至:
_imageView.frame = CGRectMake(0, -20 , _imageView.image.size.width, _imageView.image.size.height);
我在我的 iPhone 4 和 5 以及普通 iPhone 的模拟器上进行了测试,它似乎已经成功了。
您还可以将项目更新到 2.6.0 版本。这个问题对于cordova 2.5 是已知的。我有同样的问题,我只是更新它来纠正它
In your XCode target, there is a section for iPhone Deployment info. The Status Bar section of that panel has a Visibility checkbox to hide the status bar during launch. That should prevent the 20px shift you're seeing between iOS launch and Cordova readiness.
1)隐藏状态栏
在 XCode 4.6 中,选择您的项目,然后选择 Summary 选项卡,然后选中“Hide during application launch”复选框。
2)当应用程序完成加载时再次显示状态栏。你可以通过调用来做到这一点:
[[UIApplication sharedApplication] setStatusBarHidden:NO
withAnimation:UIStatusBarAnimationFade];
3) 如果 webview 部分隐藏在状态栏后面,您可能还需要调整 webview 框架的大小:
CGRect r = webView.frame;
r.size.height -= 20;
r.origin.y = 20;
webView.frame = r;
我为此创建了一个简单的 Phonegap 插件,我在 javascript 中触发 deviceready 事件后立即调用它(您可以从super.webview的插件访问您的 webview )。