我正在尝试制作landscape only app,但我根本无法进行任何轮换。
autorotate
中曾经有PhoneGap.plist
设置,但在phonegap 1.8.0中我可以找到它。它还存在吗?
我的申请没有轮换还有什么不对?
更新
我知道网页只包含一个单词“test”。我将目标设备仅设置为iPad并启用了所有四个方向。还有什么可能是错的?
是否需要特殊的html文档类型?我需要包含一些cordova-1.8.0.js吗?我找不到一个iOS(!?!)所以我用android版测试了它。我读的API现在是一样的,所以我可以使用android .js文件吗?
答案 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];
}
答案 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>