这是在计划的计时器中更新视图的好方法,还是使用OpenGL更好

时间:2013-11-26 09:01:52

标签: ios animation uiview opengl-es

我希望一些视图在屏幕边缘反弹回来。因此我已经实现了一个viewcontroller和一些弹跳的子视图。它已经知道,当视图到达边缘时,所有Framecomparsion方法和出口角度方法都是已知的。但是更新视图位置的最佳方法是什么。将来,当它们相互碰到时,矩形也应该反弹。

我尝试使用+ [UIView animation ..]方法并且它非常有用,但是当视图到达屏幕边缘时,视图层位置计算很难处理,因为它是一个计时计算。

我尝试使用预定的计时器更新屏幕,如下所示: [NSTimer scheduledTimerWithTimeInterval:1/30 target:self selector:@selector(render)userInfo:nil repeats:YES]; //如果可能的话,30 fps b 但我只是不知道它是否是一个很好的方法,因为我认为,电池耗尽太多,对吗?

到目前为止还没有学习OpenGL,但我可能非常接近,我是对的吗?

您如何看待,是解决此问题的最佳方法?如果OpenGl是最好的方法,是否有一个很好的教程你可以建议(我知道,有很多,goolge是我的朋友,但我想告诉你)。

1 个答案:

答案 0 :(得分:0)

感谢Vincents的评论,我最终提出了他的建议“我认为你可能应该尝试使用CADisplayLink。 - Vincent”!我将GLKView子类化并直接在

中处理重新定位
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect {

    glClearColor(1.0, 1.0, 1.0, 1.0);
    glClear(GL_COLOR_BUFFER_BIT);


   [self updateViewPositions];
}

对于那些也在使用iOS 6及更低版本的解决方案(min是iOS 5)的人,我找到了GLKView的this教程!