iPhone 5的splashscreen不能正确显示 – Phonegap

我正在更新PhoneGap iOS-app,使其与iPhone 5兼容。

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

当模拟iPhone 5时:当应用程序启动时,它显示正确的启animation面(Default-568h@2x.png)(此处为“5”),但很快隐藏它,而是显示iPhone 4的启animation面(这里是“4”) 。 4不包括整个应用程序,从而显示应用程序的顶部和底部条初始化。

我不完全确定它是如何工作的,但我可以想到两种可能的情况:1)两个图像同时显示,但由于某种原因,5自动隐藏,而4等待应用程序调用隐藏。 2)在某些时候,禁用手动隐藏启animation面phonegap切换出“真正的”闪屏为“假”的一个显示,直到从应用程序和phonegap的JavaScript调用可能不会显示正确的一个switchcheroo后。

有没有其他人遇到和/或解决这个?

更新:尝试删除并添加所有的闪屏图像,但无济于事。 我尝试删除较小的图像(4和它的非视网膜版本),但即使没有在项目中的任何地方出现较小的,我也得到同样的错误!

更新2:cordova2.2.0现在已经发布,从而解决这个问题根据: http : //shazronatadobe.wordpress.com/2012/10/27/whats-new-in-cordova-ios-2-2-0 /

因此,推荐的解决scheme将更新您的应用程序使用cordova2.2.0,如果这是由于某种原因不可能的解决scheme提供下面。

我在其他地方收到了两个答案,但还没有时间来testing它们: 从Phonegap Google Group的用户T123 :打开CDVViewController.m – find – (void)showSplashScreen

换线:690

来自:

 else // not iPad { orientedLaunchImageFile = launchImageFile; } 

至:

 else // not iPad { orientedLaunchImageFile = launchImageFile; /* Edited for 4-inch IP5 */ if(screenBounds.size.height == 568) orientedLaunchImageFile = [NSString stringWithFormat:@"%@-568h", launchImageFile]; } 

而从上面评论的Brion,下面的拉取请求,很好地被纳入cordova2.2.0: https : //github.com/apache/incubator-cordova-ios/pull/50

编辑:试了T123的解决scheme,它为我工作! 编辑2:Brion的修复被纳入cordova2.2.0,现已被释放!

编辑3:只是更新,以突出对那些谁不打扰读他们的评论:

对于Phonegap版本1.4.1,我设法让Hessius的修复工作是这样的:我从文件PGViewController中复制showSplashScreen,isIPad,resolveImageResource和定义#define degreesToRadian(x)(M_PI *(x)/ 180.0)。 m到我的MainViewController.m文件。 之后,XCode抱怨说,我正在给只读属性赋值,所以我编辑了PhoneGap.framework中的头文件,以使这两个属性为readwrite。 我也从Hessius的代码中将launchImageFile更改为@“Default”。 这为我做了诡计。 – 乔Dyndale 10年8月8日在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初始启动图像显示正常)。 它为我工作,我几乎没有注意到有什么区别通过hash showSplashScreen for iPhone5。

白色闪烁

我在cordova2.2也有这个问题。 我认为值得一提的是,为了使启animation面正确呈现,我不得不采取额外措施。

我做了@Hessius答案中包含的更改。 但是我注意到在启animation面出现之后出现了一个白色的闪光灯。

其他人可能会看到的(void)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"; // } } 

评论我所评论的代码(或删除),消除了我在应用程序加载和启动屏幕之间看到的白色闪烁。

希望这可以帮助别人!