Cordova - iOS - 不能允许所有方向
Posted
技术标签:
【中文标题】Cordova - iOS - 不能允许所有方向【英文标题】:Cordova - iOS - Can't allow all orientations 【发布时间】:2016-08-16 20:32:18 【问题描述】:我最近在本地从 Phongegap Build 切换到了 cordova。我一生都无法弄清楚如何在 ios 中获得允许所有人的方向。快把我逼疯了。
我已经尝试了配置中所有记录在案的方法,例如:
<platform name="ios">
<preference name="orientation" value="all" />
</platform>
但这不起作用。我还尝试通过plugin 手动设置 plist 属性,但这似乎也没有奏效。我在这里想念什么?当我打开 .ipa 文件时,其中的 plist 只有以下方向属性:
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
据我了解,应该有四个这样的:
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
【问题讨论】:
【参考方案1】:首选项名称不区分大小写,正确的条目必须是:
<preference name="Orientation" value="all" />
文档:http://cordova.apache.org/docs/en/dev/config_ref/index.html#preference
如果您需要 iPad 和 iPhone 的特定值,cordova-custom-config 非常棒。
【讨论】:
对不起,我也试过了。它没有用。我很困惑。 @gabaum10cordova clean
。我认为这也应该这样做。【参考方案2】:
您可以使用cordova-custom-config 插件来实现这一点 - 将插件安装到本地项目后,将以下内容添加到您的 config.xml:
<platform name="ios">
<!-- Set orientation on iPhone -->
<config-file platform="ios" target="*-Info.plist" parent="UISupportedInterfaceOrientations">
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</config-file>
<!-- Set orientation on iPad -->
<config-file platform="ios" target="*-Info.plist" parent="UISupportedInterfaceOrientations~ipad">
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</config-file>
如果你在 XCode 中打开项目,你应该可以看到 plist 中设置了相关的方向。
【讨论】:
这与我在原始帖子中使用(和链接)的插件有何不同? npmjs.com/package/cordova-plugin-settings-hook 看起来它做同样的事情,我知道它适用于其他属性。我用它成功地设置了CFBundleShortVersionString
属性。此外,他们提供的示例设置了方向属性。
我过去曾用它来做这件事。 illustrates setting the orientation attributes on iOS 的插件有一个 example project。现在可能有一种“官方”的 Cordova 方法可以做到这一点,因为我已经有一段时间没有研究这个了。
这是个好主意,但有点过头了。请参阅接受的解决方案。问题是,由于某种原因,当我更新 www 文件夹中的 config.xml 时,config.xml 没有更新。我不知道为什么,但公认的答案是正确的方法。
同意在您的情况下,Cordova 现在提供了一个解决方案。但是,如果需要为 iPad 和 iPhone 生成具有不同方向要求的基于 Cordova 的应用程序(我愿意),这仍然是唯一的方法(本机)。以上是关于Cordova - iOS - 不能允许所有方向的主要内容,如果未能解决你的问题,请参考以下文章
Cordova 5 build 命令正在删除 iOS 设备方向设置
离子屏幕方向 Cordova 插件在 iOS 环境中未锁定为纵向模式