iOS 8 自动旋转将图像旋转到屏幕外 [英] iOS 8 autorotate rotates images off the screen

查看:13
本文介绍了iOS 8 自动旋转将图像旋转到屏幕外的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我最近从客户那里听说了一个奇怪的问题.当他们尝试旋转屏幕时,屏幕会变黑.这似乎只是 iOS 8 的事情,因为我的最新版本只是将 iOS 8 添加到组合中.

So I recently heard word from my customers about a strange issue. The screen will go black on them when they try to rotate their screen. This appears to be an iOS 8 thing only since my latest release was just to add iOS 8 to the mix.

从我的视图控制器:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    //
    // There are 2 ways to support auto-rotation:
    //  - The OpenGL / cocos2d way
    //     - Faster, but doesn't rotate the UIKit objects
    //  - The ViewController way
    //    - A bit slower, but the UiKit objects are placed in the right place
    //

#if GAME_AUTOROTATION==kGameAutorotationNone
    //
    // EAGLView won't be autorotated.
    // Since this method should return YES in at least 1 orientation, 
    // we return YES only in the Portrait orientation
    //
    return ( interfaceOrientation == UIInterfaceOrientationPortrait );

#elif GAME_AUTOROTATION==kGameAutorotationCCDirector
    //
    // EAGLView will be rotated by cocos2d
    //
    // Sample: Autorotate only in landscape mode
    //
    if( interfaceOrientation == UIInterfaceOrientationLandscapeLeft ) {
        [[CCDirector sharedDirector] setDeviceOrientation: kCCDeviceOrientationLandscapeRight];
    } else if( interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
        [[CCDirector sharedDirector] setDeviceOrientation: kCCDeviceOrientationLandscapeLeft];
    }

    // Since this method should return YES in at least 1 orientation, 
    // we return YES only in the Portrait orientation
    return ( interfaceOrientation == UIInterfaceOrientationPortrait );

#elif GAME_AUTOROTATION == kGameAutorotationUIViewController
    //
    // EAGLView will be rotated by the UIViewController
    //
    // Sample: Autorotate only in landscpe mode
    //
    // return YES for the supported orientations

    return ( UIInterfaceOrientationIsLandscape( interfaceOrientation ) );

#else
#error Unknown value in GAME_AUTOROTATION

#endif // GAME_AUTOROTATION


    // Shold not happen
    return NO;
}

-(BOOL)shouldAutorotate
{
    return YES;
}


-(NSUInteger)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    return UIInterfaceOrientationMaskLandscape;
}

-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationLandscapeRight;
}

我能够在我的设备和模拟器上重现它......

I was able to reproduce it on my device as well as the simulator....

横向左侧肖像横向右

根据这个类似的 iPad 测试,我可以看出,图像实际上会自行旋转离开屏幕.即使游戏是横向的,我目前也允许所有 4 个方向,因为我正在使用游戏中心,并且至少一些较旧的 iOS 需要纵向登录.我使用的是相当旧的 cocos2d 版本(v1.1.0-beta2b),但我以前从未经历过这样的事情.我可能只是更改支持的方向并关闭自动旋转,但我想修复它.这是怎么回事?

From what I can tell based on this a similar iPad test, is that the image actually rotates itself off the screen. I currently allow all 4 orientations even though the game is in landscape because I'm using game center and at least some older iOSes required portrait log ins. I'm using a rather old version of cocos2d (v1.1.0-beta2b), but I've never experienced anything like this before. I can probably just change the supported orientations and turn off auto rotate, but I would like to fix it. What's going on here?

推荐答案

我在编译ios8的时候也遇到了cocos1.0的问题.在我的代码中,我发现我确实有一个 UIViewController 用作根视图控制器(它的子视图位于 Cocos2D 使用的 EAGLView 中).

I've got the issue with cocos1.0 as well when I compile for ios8. In my code I found that I did have a UIViewController that is used as the root view controller (its child is in the EAGLView used by Cocos2D).

我找到的解决方法是从我的 UIViewController 中注释以下方法

The fix I found is to comment the following method from my UIViewController

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

我已经在ios8和ios7上做了快速测试,它可以工作

I've done quick test on ios8 and ios7, and it works

这篇关于iOS 8 自动旋转将图像旋转到屏幕外的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆