0

我在希望特定视图始终保持纵向模式时遇到自动旋转问题。

我发现的一个建议是在检测到这样的横向旋转时将视图旋转回来:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
                                         duration:(NSTimeInterval)duration
{
    float rotation;

    if (toInterfaceOrientation==UIInterfaceOrientationPortrait) {
        rotation = 0;
    } 
    else 
    if (toInterfaceOrientation==UIInterfaceOrientationLandscapeLeft) {
        rotation = M_PI_2;
    } 
    else
    if (toInterfaceOrientation==UIInterfaceOrientationLandscapeRight) {
        rotation = -M_PI_2;
    }

    videoWindow.transform = CGAffineTransformMakeRotation(rotation);
    openGLView.transform = CGAffineTransformMakeRotation(rotation);

}

所以结果是,每当用户更改为横向模式时,视频视图都会正确地向后旋转,因此看起来不错,就好像它没有从一开始就旋转一样。

我的问题是 OpenGL 视图。当我将其旋转回来时,我的 OpenGL 绘图的内容会被扭曲,直到它们失败,并且我在日志上收到一条错误消息“无法制作完整的帧缓冲区对象 8cd6”

现在,如果我注释前面的代码并让视图控制器自动旋转 OpenGL 视图,它确实会旋转并且没有任何东西被扭曲(但在风景中,这些措施不适合。

所以我的问题是,苹果如何在检测到设备旋转时旋转事物,以便我可以向后模拟确切的过程以实现模拟旋转锁定 OpenGL 视图。

4

0 回答 0