2

在将 Phonegap 从 2.3.0 更新到 2.5.0 后,我的 iOS/iPhone 应用程序中的启动画面在应用程序启动期间向下移动了 20 像素。首先,它将自己定位在状态栏的后面,但很快又下降了 20 像素。这也发生在 Phonegap 默认模板中。在以前的 Phonegap 版本中,我没有遇到这个问题。我该如何解决?

4

4 回答 4

9

如果我包含了我想做的状态栏,我在 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 的模拟器上进行了测试,它似乎已经成功了。

于 2013-03-19T15:58:28.587 回答
2

您还可以将项目更新到 2.6.0 版本。这个问题对于cordova 2.5 是已知的。我有同样的问题,我只是更新它来纠正它

于 2013-04-26T16:00:24.960 回答
1

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.

于 2013-03-14T16:20:26.913 回答
0

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 )。

于 2013-04-26T13:06:10.557 回答