【H5+ & Quick-cocos2dx整合】之iOS 五 横竖屏切换处理

原创 2016年08月31日 16:22:23

ios屏幕视图分为竖屏视图和横屏视图,横屏视可以旋转而竖屏视图则不可以。在viewcontroller中有三个系统级的方法来控制当前屏幕视图的操作。

shouldAutorotate:是否可以旋

supportedInterfaceOrientations:支持的旋转方向有哪些;

preferredInterfaceOrientationForPresentation:默认的屏幕方向设置

这三个方法用于ios6,之前版本用shouldAutorotateToInterfaceOrientation来控制视图方向。

cocos2dx的屏幕视图控制

cocos2dx在创建项目时,在项目根目录生成config.json,该文件是用来配置屏幕视图的,其中参数isLandscape就是用来配置是否横屏显示视图。

RootViewController.mm是cocos的视图控制类,该类重写shouldAutorotate和supportedInterfaceOrientations,并根据配置信息来控制视图显示,如下:

- (BOOL) shouldAutorotate {

    if (ConfigParser::getInstance()->isLanscape()) {

        return YES;// isLandscapetrue时,表示横屏,则可以旋转视图

    }else{

        return NO;

    }

}

- (NSUInteger)supportedInterfaceOrientations{

#ifdef __IPHONE_6_0

    if (ConfigParser::getInstance()->isLanscape()) {

        return UIInterfaceOrientationMaskLandscape;

    }else{

        return UIInterfaceOrientationMaskPortraitUpsideDown;

    }

#endif

}

:ConfigParser是针对config.json配置内容的解析工具类,提供配置信息的解析和读写方法。

H5+ SDK的屏幕视图控制

H5 plus的视图方向控制经过PDRCoreSettings的封装,他的配置信息存储在info.plist中。由于sdk非开放源码,只能看到接口定义。

PDRCoreSettings接口如下:

//加载配置文件

- (void) load;

// info.plist中支持的方向

- (BOOL)configSupportOrientation:(UIInterfaceOrientation)orientation ;

//判断是否支持指定的方向

- (BOOL) supportsOrientation:(UIInterfaceOrientation)orientation;

//判断所有支持的方向

- (NSUInteger)supportedInterfaceOrientations;

//设置支持的方向

- (void) setlockOrientation:(NSUInteger)orientation;

H5ViewController.mm是html5 plus sdk的视图控制类,重写了supportedInterfaceOrientations,并读取info.plist的方向配置来供系统调用。

- (UIInterfaceOrientationMask)supportedInterfaceOrientations

{

    return [[PDRCore Instance].settings supportedInterfaceOrientations];

}

由于需求要求该视图必须是竖屏视图,所以该视图只能支持竖屏,解决方法有两种:

第一是修改info.plist,配置只支持竖屏;

第二是修改代码

UIInterfaceOrientationMaskPortrait

替换

[[PDRCore Instance].settings supportedInterfaceOrientations];

 

综上所述是ios的视图方向控制的工作逻辑,这些功能使用是前提是需要让该应用支持相应的视图方向。设置方法:target -> General -> Deployment Info -> Device Orientation

勾选相应的选项。

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

横竖屏切换问题ios

首先需要处理根视图 ,写一个类ji'cheng
  • zhaoyya
  • zhaoyya
  • 2014年11月20日 17:48
  • 979

iOS 强制竖屏或是横屏 (代码设置后仍无效的问题)

首先配置选项的设置:(应该按如下配置) 这里要特别注意:如果设配iPAd和iPhone,必须选择Universal,并且应该切换成iPad和iPhone分别设置上图的三个选项,如果多勾选Upside...
  • topws1
  • topws1
  • 2016年06月14日 19:47
  • 1812

【H5+ & Quick-cocos2dx整合】之iOS 一 创建原生应用

概述 HTML5+ Html5 plus: HTML5+是中国HTML5产业联盟的扩展规范,基于HTML5扩展了大量调用设备的能力,使得web语言可以想原生语言一样强大。扩展30多种能力,包括二维码、...
  • marunshengabc
  • marunshengabc
  • 2016年08月02日 15:51
  • 843

cocos2d HelloWorld 项目横竖屏、自动旋转问题

首先看下 GameConfig.h 中的宏定义,配置: /** * Modified by Bruce Yang on 2012.09.06.13.51~ */ /** Supported ...
  • yang3wei
  • yang3wei
  • 2012年09月08日 09:35
  • 6127

cocos2dx lua android 禁止屏幕旋转 重力感应

cocos2dx lua android 禁止屏幕旋转 重力感应 横竖屏切换禁止我就不说了 网上全是 可是就是找不到cocos2dx禁止180°旋转的办法 后来找了半天才解决 找到如下文件...
  • u012525920
  • u012525920
  • 2015年01月25日 12:08
  • 658

cocos2d-x游戏开发屏幕横竖屏切换

android解决方案: 1.在游戏的主activity中编写一个静态方法(继承Cocos2dxActivity) public static void changedActivityOrient...
  • aizhiqiang2
  • aizhiqiang2
  • 2016年03月24日 14:48
  • 3437

用cocos2dx+lua创建竖屏游戏

1.创建项目,不要在cocos code ide中创建,那样没有工程文件,要在中创建 直接点击创建一个新的项目。 2:在frameworks中找到项目文件打开 在 Device...
  • hao6142
  • hao6142
  • 2014年12月17日 17:39
  • 489

cocos2dx3.2 ——屏幕适配

文章转载:shahdza 的BLOG
  • chinahaerbin
  • chinahaerbin
  • 2014年09月26日 21:17
  • 29551

Cocos2d – 禁止屏幕自动旋转

Note: 1. 打开GameConfig.h文件, 定义Autorotation类型, kGameAutorotationUIViewController by default: #if defi...
  • a287971
  • a287971
  • 2012年05月29日 00:08
  • 1004

cocos2d 屏幕默认是横屏,修改为竖屏 的方法

在RootViewController.m文件里面,修改如下代码的方法shouldAutorotateToInterfaceOrientation - (BOOL)shouldAutorotateTo...
  • ssihc0
  • ssihc0
  • 2011年07月12日 18:38
  • 4953
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【H5+ & Quick-cocos2dx整合】之iOS 五 横竖屏切换处理
举报原因:
原因补充:

(最多只允许输入30个字)