在 ios cordova 插件中,对于视图控制器,如何确定是不是应该发生方向更改
Posted
技术标签:
【中文标题】在 ios cordova 插件中,对于视图控制器,如何确定是不是应该发生方向更改【英文标题】:In an ios cordova plugin, for a view controller, how to know for sure if an orientation change should happen在 ios cordova 插件中,对于视图控制器,如何确定是否应该发生方向更改 【发布时间】:2015-06-22 12:31:14 【问题描述】:我在一个cordova插件中实现了我自己的视图控制器扩展UIViewController,我希望它只有在cordova允许的情况下才能旋转
-(BOOL)shouldAutorotateToInterfaceOrientation
在 MainViewController.m.中
代码:
@implementation MyViewController
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
return YES/NO???????;
【问题讨论】:
【参考方案1】:我建议您针对该问题使用特定插件之一。两个快速选项:
-
https://github.com/apache/cordova-plugin-device-orientation
https://github.com/gbenvenuti/cordova-plugin-screen-orientation
【讨论】:
你可以访问你的主视图控制器吗? 对于cordova的主webview:webview.window.rootViewController?【参考方案2】:shouldAutorotateToInterfaceOrientation
不适用于 cordova/phonegap 应用程序 可用于本机应用程序。
尝试以下链接:
https://github.com/gbenvenuti/cordova-plugin-screen-orientation
http://www.web-garden.co.uk/blog/2012/7/29/how-to-control-the-page-orientations-in-your-ios-phonegap-application-part-2
以下函数用于本机应用程序。
iOS 6 之前
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
if (interfaceOrientation == UIInterfaceOrientationPortrait)
// your code for portrait mode
return YES;
iOS 6 之后
- (BOOL)shouldAutorotate
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (orientation == UIInterfaceOrientationPortrait)
// your code for portrait mode
return YES;
【讨论】:
那么我应该如何在插件中知道方向是否应该改变? 检查第一个 URL,您将获得检查屏幕方向的选项【参考方案3】:您可以使用以下方法在插件中获取科尔多瓦支持的方向:
self.viewController.supportedInterfaceOrientations
所以你可以这样做
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
return [self.viewController.supportedInterfaceOrientations containsObject:[NSNumber numberWithInt:interfaceOrientation]];
【讨论】:
supportedInterfaceOrientations 是 NSUInteger以上是关于在 ios cordova 插件中,对于视图控制器,如何确定是不是应该发生方向更改的主要内容,如果未能解决你的问题,请参考以下文章