cocos2d-x在ios6的模拟器上方向都是竖直的

  • 本帖最后由 leitwolf 于 2012-9-20 20:36 编辑 *

今天刚升级Xcode到最新的4.5版本,相应的模拟器也为ios6的模拟器,但发现程序只能是竖直方向的了,这在升级之前的ios5.1模拟器上是没问题的。
在RootViewController.mm 中修改方向也没什么作用。
ipod touch4上没有问题,系统为5.1。
正在下载5.1的模拟器下来看看情况。。。

— Begin quote from ____

zero_sys 发表于 2012-9-25 15:08 url

后遗症就是,如果别人用iOS 5.1的SDK编译这份代码,supportedInterfaceOrientations里面的UIInterfaceOri …

— End quote

我目前是个人开发,所以不用考虑这个问题,呵
另外官方现在的版本已经修补好这个问题了

— Begin quote from ____

leitwolf 发表于 2012-9-20 21:09 url

在英文论坛上搜索了下,已经有人解决了,方法如下:
在ios/AppController.mm的第44行替换成这样:然后在Roo …

— End quote

后遗症就是,如果别人用iOS 5.1的SDK编译这份代码,supportedInterfaceOrientations里面的UIInterfaceOrientationMaskLandsape会报未定义错误,其实supportedInterfaceOrientations和shouldAutorotate不加也行的,只需要在项目设置那里把两个Landscape方向都选上就可以,这样做的实质上也就是在info.plist上面添加字段而已

— Begin quote from ____

leitwolf 发表于 2012-9-20 21:13 url

另外发现两个问题:
1,在ios6中会经常在控制台出现这样的调试信息。
2,iphone5(4寸1136*640)的信息还是: …

— End quote

因为viewport还是处于480*320状态,相信要更改viewport才能完全适应iphone5屏幕

在英文论坛上搜索了下,已经有人解决了,方法如下:
在ios/AppController.mm的第44行替换成这样:


    NSString *reqSysVer = @"6.0";
    NSString *currSysVer =  systemVersion];
    
    if ( != NSOrderedAscending)
    {
        ; //iOS 6
    } else {
        ; //iOS 5 or less
    }
//    ;

然后在RootViewController.mm中加上两个方法:


-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

-(BOOL)shouldAutorotate
{
    return YES;
}

这样就可以得到横向的游戏了,不过就不知道有没有什么后遗症了。

另外发现两个问题:
1,在ios6中会经常在控制台出现

Cocos2d: textRangeFromPosition
Cocos2d: textInRange
Cocos2d: textRangeFromPosition
Cocos2d: textInRange

这样的调试信息。
2,iphone5(4寸1136*640)的信息还是:
cocos2d: surface size: 480x320