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