11

我正在尝试制作一个仅限风景的应用程序,但我根本无法产生任何旋转。

曾经有一个autorotate设置,PhoneGap.plist但在 phonegap 1.8.0 我可以找到它。它还存在吗?

我的应用程序没有轮换还有什么问题?

更新

我知道有一个网页只包含一个单词“测试”。我将目标设备设置为仅 iPad 并启用了所有四个方向。还有什么可能是错的?

是否需要有特殊的 html 文档类型?我需要包含一些cordova-1.8.0.js吗?我找不到适用于 iOS 的(!?!),所以我用 android 版本对其进行了测试。我读的 API 现在是一样的,所以我可以使用 android .js 文件吗?

4

4 回答 4

15

我尝试了上面的 JavaScript 解决方案,但没有得到任何乐趣在 Visual Studio 2015 中,我将 config.xml 更改为

<preference name="orientation" value="all" />

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

我不需要javascript,只需要配置设置

于 2015-09-10T00:31:06.430 回答
11

PiTheNumber 的答案对于那些可以修改 Cordova 生成的本机代码的人来说看起来不错。

在Cordova 上的这个 JIRA 问题之后,正如这个博客中所解释的那样,您还可以使用 plist 值或在您的 Javascript 代码中定义一个 window.shouldRotateToOrientation 函数,这非常适合我。

window.shouldRotateToOrientation = function(degrees) {
 return true;
}

这将为当前页面启用设备方向(因此,对于您的整个应用程序,如果它是大多数 Cordova 应用程序的“单页应用程序”)。请注意,您还可以根据以度数为单位的旋转值来决定启用它,或者甚至,为什么不,仅在某些视图上启用它,或者让用户在您的 HTML 应用程序中进行选择……很好,不是吗。

为了记录,我不需要做任何事情来获得 iOS 8 iPad 手柄旋转,而 iOS 6 和 iOS 7 iPhone 在当前的 Cordova 版本(4.2.0,cordova ios 平台版本)中默认不会处理它“iOS 3.7.0”)。这是因为可以在 Xcode 上为每个“设备类型”(平板电脑/手机)授予不同的旋转设置。需要注意的是,Cordova会先检查上面的JS函数是否存在,如果该函数不存在或者不允许旋转,就会使用Xcode的旋转设置。

于 2015-01-28T22:52:51.923 回答
8

作为Classes/MainViewController.m回报:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    //return (interfaceOrientation == UIInterfaceOrientationPortrait);
    return true;
}

对于iOS >= 6

- (BOOL)shouldAutorotate {
    return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

资源

于 2012-06-12T18:43:15.393 回答
7

您可以添加 UISupportedInterfaceOrientations

platroms/ios/{ProjectName}/{ProjectName-info.plist

添加此行:

对于 iPhone:

<key>UISupportedInterfaceOrientations</key>
    <array>
      <string>UIInterfaceOrientationPortrait</string>
      <string>UIInterfaceOrientationLandscapeLeft</string>
      <string>UIInterfaceOrientationPortraitUpsideDown</string>
      <string>UIInterfaceOrientationLandscapeRight</string>
    </array>

对于 iPad:

<key>UISupportedInterfaceOrientations~ipad</key>
    <array>
      <string>UIInterfaceOrientationPortrait</string>
      <string>UIInterfaceOrientationLandscapeLeft</string>
      <string>UIInterfaceOrientationPortraitUpsideDown</string>
      <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
于 2015-01-31T20:47:10.610 回答