iPhone 5飞溅屏幕显示不正确-Phonegap

iPhone 5飞溅屏幕显示不正确-Phonegap,iphone,ios,cordova,splash-screen,Iphone,Ios,Cordova,Splash Screen,我正在更新我的PhoneGap iOS应用程序,使其与iPhone 5兼容 在我的应用程序初始化后,我正在手动隐藏启动屏幕 模拟iPhone 5时:当应用程序启动时,它会显示正确的启动屏幕(默认)-568h@2x.png)(此处为“5”),但很快将其隐藏,并显示iPhone4启动屏幕(此处为“4”)。4没有覆盖整个应用程序,因此显示了应用程序的顶部和底部栏 我不完全确定它是如何工作的,但我可以想到两种可能的情况: 1) 两个图像同时显示,但由于某些原因,5自动隐藏,而4等待应用程序调用隐藏。 2

我正在更新我的PhoneGap iOS应用程序,使其与iPhone 5兼容

在我的应用程序初始化后,我正在手动隐藏启动屏幕

模拟iPhone 5时:当应用程序启动时,它会显示正确的启动屏幕(默认)-568h@2x.png)(此处为“5”),但很快将其隐藏,并显示iPhone4启动屏幕(此处为“4”)。4没有覆盖整个应用程序,因此显示了应用程序的顶部和底部栏

我不完全确定它是如何工作的,但我可以想到两种可能的情况: 1) 两个图像同时显示,但由于某些原因,5自动隐藏,而4等待应用程序调用隐藏。 2) 在某些情况下,当禁用手动隐藏启动屏幕时,phonegap会将“真”启动屏幕切换为“假”启动屏幕,直到来自应用程序的javascript调用为止,并且phonegap在此切换之后可能不会显示正确的启动屏幕

是否有其他人遇到和/或解决了此问题

更新: 再次尝试删除和添加所有飞溅图像,但无效。我试图删除较小的图像(4和它的非视网膜版本),但即使在项目中没有较小的图像,我也会得到相同的错误

更新2: Cordova 2.2.0现已发布,因此根据以下内容解决了此问题:


因此,建议的解决方案是更新您的应用程序以使用Cordova 2.2.0,如果由于某些原因无法实现,则提供以下解决方案。

我在其他地方收到了两个答案,但还没有时间测试它们: : 打开CDVViewController.m--查找-(void)showSplashScreen

关于第690行的更改

发件人:

else // not iPad

{

    orientedLaunchImageFile = launchImageFile;

}
致:

Brion在上述评论中提出以下拉动请求,hoepfully将并入Cordova 2.2.0:

编辑:尝试了T123的解决方案,它对我有效! EDIT2:Brion的修复被整合到Cordova 2.2.0中,现在已经发布了

编辑3:只需更新以突出显示一条评论,供那些懒得阅读的人参考:


对于Phonegap版本1.4.1,我设法让Hessius的修复程序如下:我将showSplashScreen、isIPad、resolveImageResource和定义#degreesToRadian(x)(M#PI*(x)/180.0从文件PGViewController.M复制到MainViewController.M文件。之后,XCode抱怨我给只读属性赋值,所以我在PhoneGap.framework中编辑了头文件,使这两个属性为readwrite。我还将LaunchImageFile从Hessius的代码更改为@“默认”。这对我来说是个好办法Joe Dyndale 10月8日至12日15时23分对此的修复(https://issues.apache.org/jira/browse/CB-1482)直到2.2才出来。使用不稳定的版本是非常危险的,我自己也懒得从源代码编译,所以我尝试了以下方法:

在MainViewController.m中

- (void) showSplashScreen   
{   
    CGRect screenBounds = [[UIScreen mainScreen] bounds];   
    // HACK: PhoneGap pre-2.2 does not support iphone5 splash image well, so we just skip it    
    if (screenBounds.size.height == 568) {  
        return; 
    }   
    [super showSplashScreen];   
}   
这将禁用iPhone5的showSplashScreen,以避免PhoneGap添加的较短的发布图像(iOS初始发布图像显示良好)。这对我来说很有效,我几乎没有注意到任何区别,因为我把iPhone5的showSplashScreen删掉了。

白色闪烁

我对Cordova 2.2也有同样的问题。我认为值得一提的是,我必须采取额外的步骤,以获得正确的启动屏幕渲染

我做了@Hessius答案中包含的更改。但我注意到,在闪屏出现后,出现了一个白色的闪屏

在(无效)showSplashScreen方法中,其他人可能会看到

if (launchImageFile == nil) { // fallback if no launch image was specified
 //        if (CDV_IsIPhone5()) {
 //            // iPhone 5 or iPod Touch 6th-gen
 //            launchImageFile = @"Default-568h";
 //        } else {
        launchImageFile = @"Default";
 //        }
}
注释掉(或删除)我已经注释过的代码,消除了我在应用程序加载和启动屏幕之间看到的白色闪烁


希望这对别人有帮助

您是否更改了XCode项目中的
启动图像
?您是否手动粘贴了飞溅图像(在
您的\u项目中
->
资源
->
飞溅
)?是!尝试删除并读取所有闪屏图像,但毫无效果,我认为这实际上是Cordova/PhoneGap中的一个缺陷——它似乎是手动重新加载闪屏图像,而当不是在iPad上时,它默认加载“默认”图像(经典大小的闪屏)。我想需要更新以检查屏幕大小…我已经为Cordova/PhoneGap提交了一个bug,在xcode的PhoneGap项目中如何实际使用这个更新的文件?它看起来像是项目本身的外部文件。我添加此代码并在iPhone5模拟器上运行的经验并没有改变任何事情。您使用的是cordova 2.0吗?Cordova被添加为子项目“CordovaLib.xcodeproj”,如果您展开此项目,您会看到文件夹“Classes”,在该文件夹中有一个子文件夹“clever”,在这里您会找到前面提到的CDVViewController.m-在此处进行更改,保存并预存!我使用的是1.8.1-所以可能我运气不好?是的,我想你可能想升级,为了增加iOS 6的兼容性,如果没有其他的东西的话。对于Phonegap版本1.4.1,我设法让Hessius的修复程序像这样工作:我复制了方法
showSplashScreen
isIPad
resolveImageResource
和从文件
PGViewController.M
到我的
MainViewController.M
文件的定义
#定义度数弧度(x)(M_PI*(x)/180.0)
。之后,XCode抱怨我给只读属性赋值,所以我在PhoneGap.framework中编辑了头文件,使这两个属性
readwrite
。我还将
launchImageFile
从Hessius的代码更改为
@“默认值”
。这对我起了作用。
if (launchImageFile == nil) { // fallback if no launch image was specified
 //        if (CDV_IsIPhone5()) {
 //            // iPhone 5 or iPod Touch 6th-gen
 //            launchImageFile = @"Default-568h";
 //        } else {
        launchImageFile = @"Default";
 //        }
}