【问题标题】:iPhone 5 splashscreen not displaying correctly - PhonegapiPhone 5 闪屏显示不正确 - Phonegap
【发布时间】:2012-09-09 03:48:03
【问题描述】:

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

我在应用初始化后手动隐藏启动画面。

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

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

有其他人遇到和/或解决过这个问题吗?

更新: 尝试再次删除并添加所有启动图像,但无济于事。我尝试删除较小的图像(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,如果由于某种原因无法做到这一点,下面提供了解决方案。

【问题讨论】:

  • 您是否更改了 XCode 项目中的 Launch Images?您是否手动粘贴了初始图像(your_project->Resources->splash)?
  • 是的!尝试删除和读取所有启动图像,但无济于事
  • 我相信这实际上是 Cordova/PhoneGap 中的一个错误——它似乎需要手动重新加载启动画面图像,当不在 iPad 上时它默认加载“默认”图像(经典-大小的飞溅)。需要更新以检查我猜的屏幕尺寸...
  • 我在 issues.apache.org/jira/browse/CB-1482 提交了 Cordova/PhoneGap 的错误

标签: iphone ios cordova splash-screen


【解决方案1】:

我在其他地方收到了两个答案,但还没有时间测试它们: From user T123 in the Phonegap Google Group: 打开 CDVViewController.m -- 找到 - (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 的解决方案,它对我有用! EDIT2:Brion 的修复程序已包含在现已发布的 Cordova 2.2.0 中!

EDIT3:只是更新为那些不费心阅读它们的人突出显示评论:

对于 Phonegap 1.4.1 版,我设法让 Hessius 的修复程序像这样工作:我从将 PGViewController.m 文件添加到我的 MainViewController.m 文件中。之后,XCode 抱怨我正在为只读属性赋值,所以我编辑了 PhoneGap.framework 中的头文件,以使这两个属性可读写。我还将 Hessius 的代码中的 launchImageFile 更改为 @"Default"。这对我有用。 – 乔·丁代尔 2012 年 10 月 8 日 15:23

【讨论】:

  • 您如何在 xcode 中的 PhoneGap 项目中实际使用此更新文件?看起来它是项目本身的外部文件。我添加此代码并在 iPhone5 模拟器上运行它的经验并没有改变任何东西。
  • 您使用的是cordova 2.0 吗? Cordova 被添加为子项目“CordovaLib.xcodeproj”,如果您展开此项目,您会看到文件夹“Classes”,在此文件夹中有一个子文件夹“Cleaver”,在这里您会找到前面提到的 CDVViewController.m - 在此处进行更改,保存并保存!
  • 我使用的是 1.8.1 - 所以也许我运气不好?
  • 是的,我认为您可能需要升级,以提高 iOS 6 的兼容性
  • 对于 Phonegap 1.4.1 版,我设法让 Hessius 的修复程序像这样工作:我从文件中复制了方法 showSplashScreenisIPadresolveImageResource 和定义 #define degreesToRadian(x) (M_PI * (x) / 180.0) PGViewController.m 到我的 MainViewController.m 文件。之后,XCode 抱怨我在为只读属性赋值,所以我编辑了 PhoneGap.framework 中的头文件,使这两个属性为readwrite。我还将 launchImageFile从 Hessius 的代码更改为 @"Default"。这对我有用。
【解决方案2】:

此问题的修复 (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 初始启动图像显示正常)。它对我有用,我几乎没有注意到 iPhone5 的 showSplashScreen 有什么不同。

【讨论】:

    【解决方案3】:

    白色闪烁

    我在使用 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";
     //        }
    }
    

    注释掉(或删除)我已注释的代码,消除了我在应用加载和启动屏幕之间看到的白色闪烁。

    希望这对某人有所帮助!

    【讨论】:

      猜你喜欢
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 2017-07-22
      • 2018-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多