我正在使用OpenGL为iPad构建应用程序,并且屏幕旋转存在问题。应用程序本身工作正常并在所有四个方向上正确显示,但其他元素仅部分响应设备旋转。
OpenGL使用转换矩阵处理应用程序的旋转。一切正常。默认图像也以正确的旋转显示。
然而,多任务栏不能正常旋转。侧面显示应用程序已打开。因此,如果我打开应用程序,然后双击它在正确一侧的主页按钮,但在旋转设备后它保持在同一侧,直到应用程序关闭并重新打开。当显示此栏时,OpenGL应用程序将旋转以匹配栏的位置。
对话框,例如“登录游戏中心”弹出窗口也未正确旋转。它们似乎以标准纵向方向出现。
我不确定是否还有其他具体细节需要确定问题,但我们非常感谢任何建议。
答案 0 :(得分:0)
我似乎已经在一些其他线程中整理了一个解决方案片段的解决方案。我认为这解决了这个问题。
我有一个主要类来控制我的大多数应用程序。它已经注册接收设备轮换通知,如下所示:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
我在方向处理函数中添加了几行来手动设置状态栏位置:
- (void) updateOrientation { if ([[UIDevice currentDevice] orientation] < 5 && [[UIDevice currentDevice] orientation]>0) { orientation = [[UIDevice currentDevice] orientation]; [UIApplication sharedApplication].statusBarOrientation = orientation; } }
条件限制处理程序仅响应横向和纵向方向,而不是面朝上和面朝下。
如果有人有更好的解决方案,我仍然希望听到它,否则,希望这可以帮助其他人。