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

时间:2012-06-12 15:05:50

标签: ios cordova screen-orientation

我正在尝试制作landscape only app,但我根本无法进行任何轮换。

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

我的申请没有轮换还有什么不对?

更新

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

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

3 个答案:

答案 0 :(得分:11)

PiTheNumber的回答看起来很好,可以修改Cordova生成的本机代码。

在Cordova上关注this JIRA issue,并且整齐地解释in this blog,你也可以使用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旋转设置。

答案 1 :(得分:8)

Classes/MainViewController.m中返回true:

- (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];
}

Source

答案 2 :(得分: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>