为什么我的Cordova/PhoneGap iOS应用程序在设备旋转时不会旋转?

PiT*_*ber 11 screen-orientation ios cordova

我正在尝试制作一个仅景观应用,但我根本无法产生任何旋转.

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

我的应用程序没有旋转还有什么可能是错的?

UPDATE

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

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

Amj*_*shi 15

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

<preference name="orientation" value="all" />
Run Code Online (Sandbox Code Playgroud)

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

我不需要javascript只是配置设置


Gre*_*reg 11

通过修改Cordova生成的本机代码,PiTheNumber的答案看起来很好.

遵循Cordova上的这个JIRA问题,并且在本博客中得到了解释,你也可以使用plist值或在你的Javascript代码中定义一个window.shouldRotateToOrientation函数,这非常适合我.

window.shouldRotateToOrientation = function(degrees) {
 return true;
}
Run Code Online (Sandbox Code Playgroud)

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

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


PiT*_*ber 8

作为Classes/MainViewController.m回报:

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

适用于iOS> = 6

- (BOOL)shouldAutorotate {
    return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
Run Code Online (Sandbox Code Playgroud)

资源


小智 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>
Run Code Online (Sandbox Code Playgroud)

对于Ipad:

<key>UISupportedInterfaceOrientations~ipad</key>
    <array>
      <string>UIInterfaceOrientationPortrait</string>
      <string>UIInterfaceOrientationLandscapeLeft</string>
      <string>UIInterfaceOrientationPortraitUpsideDown</string>
      <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
Run Code Online (Sandbox Code Playgroud)