cordovaiOS更改屏幕方向在一个页面上进行

我有一个在cordova3 +为iPhone开发的应用程序。 目前该应用程序运行良好。 我还限制了当前应用程序的横向视图,即应用程序仅以纵向显示。

应用程序包含大量的说明和报告页面。 我想要的是以纵向显示所有页面,并在横向显示报告页面。

Iam使用Backbone.js + underscore.js框架。

有没有人有任何build议或解决这个?

提前致谢!

编辑:我想要的是强制该特定的报告页面显示在横向视图。 并以纵向显示所有其他页面。

编辑:以编程方式控制iPhone上的屏幕方向为cordova 3+

但是我找不到任何解决scheme。 Atlast我使用CSS实现了它。

-ms-transform:rotate(-90deg); /* IE 9 */ -webkit-transform:rotate(-90deg); /* Chrome, Safari, Opera */ transform:rotate(-90deg); /* Standard syntax */ 

无论如何这不是一个完美的解决scheme,但它的作品

而且你可以编程方式使用本地代码将单个页面改为横向格式,并通过使用javascript调用它。

创build一个新的js文件作为ScreenOrientation.js并插入下面的代码,

 var ScreenOrientation = { //alert(orientation); callScreenOrientationNative: function(success,fail,orientation) { return Cordova.exec( success, fail, "ScreenOrientation", "screenorientationFunction", [orientation]); } }; 

并在index.html中添加上面的文件如下,

 <script type="text/javascript" src="ScreenOrientation.js"></script> 

在任何添加的js文件中添加下面的函数(在我的项目中,我添加了一个script.js文件来添加常用function),

 function callScreenOrientation(orientation) { ScreenOrientation.callScreenOrientationNative(nativePluginResultHandler,nativePluginErrorHandler,orientation); } function nativePluginResultHandler (result) { } function nativePluginErrorHandler (error) { } 

在config.xml中添加下面的function名称,

 <!-- Screen Orientation custom plugin to display reports page. --> <feature name="ScreenOrientation"> <param name="ios-package" value="ScreenOrientation"/> </feature> 

在插件添加(对于cordova <3.0),

 <plugins> <plugin name="ScreenOrientation" value="ScreenOrientation" /> </plugins> 

在Cordova项目> Plugins右键单击并select新文件,然后从iOS中selectCocoa touch,然后selectobjective-C Class,然后单击next,在类名称中插入“ScreenOrientation”和“CDVPlugin”的子类,然后单击下一步并单击create。

在ScreenOrientation.h中input以下内容,

 #import <Cordova/CDV.h> @interface ScreenOrientation : CDVPlugin - (void) screenorientationFunction:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options; @end 

在ScreenOrientation.m中input以下内容,

 #import "ScreenOrientation.h" @implementation ScreenOrientation - (void) screenorientationFunction:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options { [arguments pop]; NSString *orientation = [arguments objectAtIndex:0]; if ( [orientation isEqualToString:@"LandscapeLeft"] ) { NSLog(@"Landscape Left"); [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeLeft]; } else if ( [orientation isEqualToString:@"LandscapeRight"] ) { NSLog(@"Landscape Right"); [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeRight]; } else if ( [orientation isEqualToString:@"Portrait"] ) { NSLog(@"Portrait"); [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortrait]; } else if ( [orientation isEqualToString:@"PortraitUpsideDown"] ) { NSLog(@"Portrait upSide Down Left"); [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortraitUpsideDown]; } } @end 

在Cordova项目中单击search并search“shouldAutoRotate并find下面的内容并更改返回,默认情况下它会是'是'将其更改为'否'。

CDVViewController.m

 - (BOOL)shouldAutorotate { return NO; } 

并在项目设置,在设备方向检查所有选项(虽然不重要),

 Project Settings > Device orientation > Tick all 4 options. 

并从这样的项目中调用它,

 callScreenOrientation('LandscapeLeft'); callScreenOrientation('LandscapeRight'); callScreenOrientation('Portrait'); callScreenOrientation('PortraitUpsideDown'); 

这个插件允许您以编程方式旋转iOS和Android上的屏幕。

https://github.com/kant2002/cordova-plugin-screen-orientation

由于性能(你的里程可能会有所不同,取决于DOM的大小),Android的旋转有可视的故障,但在旋转iOS是完美的。

    Interesting Posts