在 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 插件中,对于视图控制器,如何确定是不是应该发生方向更改的主要内容,如果未能解决你的问题,请参考以下文章

插件返回后 Cordova 视图无响应

Cordova iOS 自定义插件:处理内存警告

将cordova文件插件添加到现有ios项目时重复符号_kCDVFilesystemURLPrefix

如何控制/强制 iOS 系统音量 [cordova]

如何从 Cordova 插件添加本机视图

是否有使用适用于 iOS 的蓝牙经典的 Cordova/PhoneGap 插件?