IOS 横向模式不工作 OPEN GL

IOS Landscape Mode not working OPEN GL

好吧,几乎所有方法都试过了,但还是不行。

我需要我的引擎以 LandscapeRight 模式启动,因此我调用:

//
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO];

问题是其余的根本没有旋转,

我使用以下方法成功旋转了视图:

[pExternViewController setTransform:CGAffineTransformMakeRotation(M_PI/2.0f)];

但它没有按预期工作,帧缓冲区大小现在是正确的:

FrameBuffer: width: 960, height: 640

你仍然可以看到它不是 960x640,我不明白为什么?

好的,终于成功了。

首先将此密钥添加到您的 plist 文件中(必需)

<key>UILaunchStoryboardName</key>
<string>Launch Screen</string>

屏幕尺寸定义

#define SCREEN_WIDTH (IOS_VERSION_LOWER_THAN_8 ? (UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation) ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.height) : [[UIScreen mainScreen] bounds].size.width)

#define SCREEN_HEIGHT (IOS_VERSION_LOWER_THAN_8 ? (UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation) ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.width) : [[UIScreen mainScreen] bounds].size.height)

#define IOS_VERSION_LOWER_THAN_8 (NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_7_1)

window初始化

- (void) applicationDidFinishLaunching: (UIApplication*) application
{
    // Start in Landscape
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO];

    // Disable Auto Lock screen
    [[UIApplication sharedApplication] setIdleTimerDisabled: YES];

    // Set Bounds with the proper screen resolution
    CGRect screenBounds = [[UIScreen mainScreen] bounds];
    screenBounds        = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);

    // Create window and view controler
    m_window            = [[UIWindow alloc] initWithFrame: screenBounds];
    m_window.backgroundColor = [UIColor redColor];

    // Create new view controller
    pExternViewController        =  [SvgzViewController alloc] ;

    // Initialize view controler with all pointers set up
    if( [pExternViewController initWithFrame: screenBounds ] == nil)
    {
        assert(!"Failed to initialize screen");
        exit(0);
    }

    // Rotate the window
    [m_window setTransform:CGAffineTransformMakeRotation(M_PI/2.0f)];

    // Set the proper window center after transformation
    m_window.center         = CGPointMake(screenBounds.size.height/2, screenBounds.size.width/2);

    // Add GL window
    [m_window addSubview: pExternViewController];

    //
    [m_window makeKeyAndVisible];

}

至少不必通过这种方式更改 GL 侧。