我在希望特定视图始终保持纵向模式时遇到自动旋转问题。
我发现的一个建议是在检测到这样的横向旋转时将视图旋转回来:
- (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 视图。