iPhone 5闪屏无法正确显示 - Phonegap

时间:2012-09-16 20:47:37

标签: iphone ios cordova splash-screen

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

我的应用初始化后,我手动隐藏了启动画面。

模拟iPhone 5时:当应用程序启动时,它会显示正确的启动画面(Default-568h@2x.png)(此处为“5”),但会快速隐藏它,而是显示iPhone 4启动画面(此处为“ 4" )。 4并未涵盖整个应用程序,因此显示应用程序初始化的顶部和底部栏。

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

还有其他人遇到过这个问题吗?

更新: 尝试再次删除和添加所有启动图像,但无济于事。我尝试删除较小的图像(4及其非视网膜版本),但即使没有项目中任何地方存在较小的图像,我也会得到同样的错误!

更新2: Cordova 2.2.0现已发布,因此根据http://shazronatadobe.wordpress.com/2012/10/27/whats-new-in-cordova-ios-2-2-0/

解决了这个问题

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

3 个答案:

答案 0 :(得分:19)

我在其他地方收到了两个答案,但还没来得及测试它们: From user T123 in the Phonegap Google Group: 打开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,以下拉动请求,可以并入Cordova 2.2.0:https://github.com/apache/incubator-cordova-ios/pull/50

编辑:尝试过T123的解决方案,它对我有用! 编辑2:Brion的修复程序已合并到Cordova 2.2.0中,现已发布!

EDIT3:只需更新以突出显示那些不打扰他们的人的评论:

对于Phonegap版本1.4.1,我设法让Hessius的修复工作如下:我复制了方法showSplashScreen,isIPad,resolveImageResource和定义#define degreesToRadian(x)(M_PI *(x)/ 180.0)将PGViewController.m文件传递给我的MainViewController.m文件。之后,XCode抱怨我正在为只读属性赋值,所以我在PhoneGap.framework中编辑了头文件,使这两个属性读写。我还将launchImageFile从Hessius的代码更改为@“Default”。这对我有用。 - Joe Dyndale 12年8月8日15:23

答案 1 :(得分:1)

对此的修复(https://issues.apache.org/jira/browse/CB-1482)直到2.2才出来。使用不稳定版本是非常危险的,我不打算自己编译源代码,所以我尝试了以下hack:

在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初始启动图像显示正常)。它对我有用,我几乎没有注意到通过iPhone11的showSplashScreen进行攻击。

答案 2 :(得分:0)

白色闪烁

我在Cordova 2.2上遇到了同样的问题。我认为值得一提的是,我必须采取额外的步骤才能使启动画面正确渲染。

我做了@Hessius回答中包含的更改。但是我注意到在闪屏出现后产生了白屏闪光。

在(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";
 //        }
}

评论我评论的代码(或删除),消除了我在app load和launch screen之间看到的白色闪烁。

希望这有助于某人!