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

Posted

技术标签:

【中文标题】PhoneGap + Landscape:SplashScreen 正确加载,然后在闪烁和消失之前短暂旋转【英文标题】:PhoneGap + Landscape: SplashScreen Loads Properly, Then Rotates Briefly Before Flashing and Disappearing 【发布时间】:2013-09-02 17:19:00 【问题描述】:

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

我有一个启动画面图像,我也将它用作我的应用第一页上的背景图像。我的预期目标是从初始屏幕无缝/不可见地过渡到我的应用程序的第一页(所发生的只是一个按钮,淡入)。

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

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

我还制作了一段视频,说明我尝试启动该应用时会发生什么。你可以看到旋转/闪烁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 startsiPhone 5 splashscreen not displaying correctly - Phonegap

【问题讨论】:

【参考方案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。

【讨论】:

【参考方案2】:

看起来正在出现和旋转的启动图像是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 启动图像。

【讨论】:

看起来这可能是一个已知问题:issues.apache.org/jira/browse/CB-3562

以上是关于PhoneGap + Landscape:SplashScreen 正确加载,然后在闪烁和消失之前短暂旋转的主要内容,如果未能解决你的问题,请参考以下文章

支持 Landscape Orientation 的 UiViewController 将其他 Views 放入 Landscape

UE4 Landscape室外地形0059bate1

Big Data Landscape 2018

CNCF LandScape Summary

CSS Media Query Landscape - 键盘问题

在 LANDSCAPE 中使用 GhostScript 打印 PDF