PhoneGap + Landscape:SplashScreen正确加载,然后在闪烁和消失之前快速旋转

时间:2013-09-02 17:19:01

标签: iphone ios xcode cordova splash-screen

我正在开发一款专为仅使用横向设置的iPhone应用程序(PhoneGap 3.0,Xcode 4.6.3)。我在Xcode中包含了适当大小的启动图像,并且只指定了iPhone作为目标设备,并且只启用了Landscape Left和Landscape Right。

我有一个闪屏图像,我也在我的应用程序的第一页上用作背景图像。我的目标是从启动画面到我的应用程序的第一页进行无缝/不可见的转换(所有发生的事情都是按钮,淡入)。

这是有效的,但是在启动屏幕加载之后......片刻之后,启动画面图像(不确定它是否是同一个)旋转并且未对齐/放大。然后消失,我们到达在我的应用程序的第一页。

这是一个并排 - 左边是启动画面,右边是启动画面短暂旋转时会发生的情况。

Left: splash-screen with button. Right: splash-screen briefly rotated

我还制作了一个视频,了解当我尝试启动应用时会发生什么。您可以看到旋转/闪烁here on this YouTube video

我安装了启动画面插件,认为这可以让我更好地控制这个问题。在最外层的config.xml文件中,我更新了这一行:

<preference name="AutoHideSplashScreen" value="true" />

并将值设置为 false

当我这样做时,启动画面最初显示得很好,但是当它旋转时......它就像一个旋转器一样“冻结”到位。此行为在second half of the same video

中可见

我想删除这个闪屏旋转,感觉就像我忽略了一些相当基本的东西。启动画面插件放大效果的事实告诉我,这可能是某个地方的Xcode设置?

不确定尝试解决此问题的最佳方法。我越是看着它,我就越不确定它是PhoneGap还是Xcode问题。任何帮助或建议都非常感谢,因为我花了很多时间来试图解决这个问题。

我已经看到了一些与我相似的其他问题,但到目前为止还没有确切的答案可能会导致这个问题。一些较旧的答案,虽然问题描述非常相似,但我无法再找到参考代码。

Splash screen runs then flashes the wrong random image before application starts
iPhone 5 splashscreen not displaying correctly - Phonegap

2 个答案:

答案 0 :(得分:1)

以下是我处理此问题的方法。不幸的是,修复程序为项目添加了资源,但没有显示白色闪烁或旋转的背景图像。

您看到的第一个图像是Xcode对正确方向的启动画面的渲染。几秒钟的旋转是PhoneGap的渲染,这就是问题所在,在CDVSplashScreen.m文件中。我不太熟悉Objective-C或Cordova的代码来重写这个插件,但作为修复,我做了以下几点:

(1)复制所有屏幕图像并通过将Cordova添加到文件的开头重命名它们。例如,您将拥有Default.png和CordovaDefault.png。对于所有新的Cordova命名图像,使它们成为原始背景图像的纯色背景颜色(或者在我的情况下,图案)。

(2)打开CDVSplashScreen.m并找到以下行:

    if (imageName) {
        imageName = [imageName stringByDeletingPathExtension];
        } else {
        imageName = @"Default";
        }

对于我的版本,这是第126行。将行替换为:

    imageName = @"CordovaDefault";

这样做是告诉PhoneGap使用新图像,并将原始图像留给Xcode。

答案 1 :(得分:0)

看起来正在出现并正在旋转的启动图像是 Default~iphone.png

在一些额外的测试中,我发现在最外层的config.xml文件中,我能够通过修改以下代码来删除这个旋转的启动画面实例

    <feature name="SplashScreen">
            <param name="ios-package" value="CDVSplashScreen" />
            <param name="onload" value="true" />
    </feature>

并将 onload 参数设置为 false 的值。这似乎可以解决问题。

我现在在启动画面和我的应用程序的第一页之间看到一个白色的“闪光”,但我在这里看到了几个与此相关的问题......所以感觉就像进步一样。

//编辑:我认为旋转的启动图像实际上是PhoneGap的启动画面(并且启动画面插件设计用于处理其他人报告的白色“闪烁/闪烁”问题)。当应用程序设置为仅横向时,不确定为什么它以这种方式处理 Default~iphone.png 启动图像。