【发布时间】:2013-02-28 00:31:54
【问题描述】:
我有一个 iPad 应用程序,正在使用 openGL 绘制主视图,我想在设备旋转时为我自己的更改设置动画。
请注意,这个应用程序只是偶尔绘制,它不会一直动画。此外,我的场景是(非常复杂的)2D 绘图,而不是 3D。我只是希望它在设备方向更改期间简单地围绕显示中心旋转,保持正确的纵横比。
目前我只有以下代码:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
// nothing yet
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
IMMainView *mv = (IMMainView *)self.view;
[mv createRenderbuffer];
[mv drawView];
}
我只是在旋转完成后重新创建 OpenGL 渲染缓冲区以匹配新的宽度和高度。
默认的 iOS 行为似乎会旋转视图,但也会随着纵横比的变化而奇怪地拉伸它。
我可以为我的绘图参数设置动画,以便在过渡期间更好地显示某些东西,但我不明白 (1) 如何停止 iOS 为我的图层设置动画以及 (2) 如何通过这些方法调用设置动画循环与 iOS 动画相匹配。
例如,在动画过程中,实际的视图宽度和高度是否在逐渐变化?
还有一个可能的问题是何时重新创建渲染缓冲区,因为如果 OpenGL 缓冲区与 iOS 视图边界不匹配,则像素纵横比不正确,并且绘图看起来很糟糕。
任何帮助将不胜感激。
【问题讨论】:
-
好的我想我理解了我的问题的部分答案,即我需要在方向更改期间继续呈现渲染缓冲区以覆盖默认情况下显示的内容。目前我只在需要根据 UI 更改更改视图内容时显示它。
标签: ios animation opengl-es interface-orientation