我使用的是cordova 3.5.0-0.2.6(最后一个稳定版本)。 我在锁定iPad设备的方向时遇到问题。 在iPhone上它运行正常,但在iPad上方向没有锁定。
我想锁定整个应用程序,而不仅仅是页面。
这是我当前的config.xml:
<?xml version="1.0" encoding="utf-8"?>
<widget id="com.domain"
version="version"
xmlns="http://www.w3.org/ns/widgets">
<name>xxx</name>
<description>Lorem ipsum</description>
<access origin="*"/>
<author email="x@x" href="https://x.com">x</author>
<content src="index.html?platform=cordova"/>
<feature ...></feature>
<preference name="permissions" value="none"/>
<preference name="orientation" value="portrait"/>
<preference name="show-splash-screen-spinner" value="true"/>
<preference name="auto-hide-splash-screen" value="true"/>
<preference name="prerendered-icon" value="true"/>
<preference name="disallowoverscroll" value="true"/>
<preference name="webviewbounce" value="false"/>
<preference name="StatusBarOverlaysWebView" value="false"/>
<preference name="StatusBarBackgroundColor" value="#000000"/>
</widget>
生成的plist文件如下所示:
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations¨ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
答案 0 :(得分:2)
我尝试了很多关于这个bug的解决方法,但是大多数都失败了。幸运的是,我找到了一个Cordova插件,可以通过JavaScript成功锁定屏幕方向。也在iPad上工作。
https://github.com/yoik/cordova-yoik-screenorientation
cordova plugin add net.yoik.cordova.plugins.screenorientation
screen.lockOrientation('portrait-primary')
锁定屏幕。确保在文档deviceready
被解雇后调用此函数。答案 1 :(得分:2)
周围有点黑客攻击,但解决这个问题的一种方法是通过Cordova钩子。例如,将其放在hooks/before_compile
目录中:
var fs = require('fs');
var plist = './platforms/ios/YourProjectName/YourProjectName-Info.plist';
fs.exists(plist, function (exists) {
if (exists) {
var p = fs.readFileSync(plist, 'utf8');
p = p.replace(
/<key>(UISupportedInterfaceOrientations(\~ipad)*)<\/key>[\r\n ]*<array>[\s\S]*?(?=<\/array>)/ig,
"<key>$1</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t"
);
fs.writeFileSync(plist, p, "utf8");
}
});
当您为iOS(cordova build ios
)构建时,它现在应该自动更改plist。