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 非常棒。

【讨论】:

对不起,我也试过了。它没有用。我很困惑。 @gabaum10 非常适合我。您能否让我们知道您使用的是哪个版本的科尔多瓦?您还可以发布完整的 config.xml 吗?在进行区分大小写的“方向”更改后,您可能必须删除并重新添加 ios 平台 天哪,我不得不删除该项目并重新添加它。 或者,您似乎可以在项目上运行cordova 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 iOS 在单页上将屏幕方向更改为横向

cordova/ios 媒体查询方向从不报告“风景”

Cordova 5 build 命令正在删除 iOS 设备方向设置

离子屏幕方向 Cordova 插件在 iOS 环境中未锁定为纵向模式

Meteor + Cordova + iOS:不允许上传文件

在 ios cordova 插件中,对于视图控制器,如何确定是不是应该发生方向更改