是否有可能在iOS上控制帧速率

时间:2012-05-16 12:19:08

标签: ios opengl-es views

我在屏幕上弹跳一个球,通过设置其原点属性来移动UIView,但我发现球的移动并不顺畅。我检查了drawInRect被调用的频率,它是30次/秒,我没有考虑到足以使快速球运动平稳。

我的问题是,是否可以要求系统以60fps刷新/重绘屏幕?你能在OpenGL中做同样的事吗?

2 个答案:

答案 0 :(得分:0)

您可以考虑设置显示链接功能。这将允许您为通过系统(或每个特定数量的帧)的每个绘图调用触发一个方法。您要处理的课程是CADisplayLink,here是一个教程。如果你的动画还不够快,那么你的动画永远不会看起来流畅;)。

答案 1 :(得分:-1)

你不需要改变ios的fps来使你的动画正确。你只需要在你的代码中更改它,你可以使用NSTimer(例子): -

在某些动画上初始化计时器: -

    float theInterval = 1.0/30.0;//Here you can set the frame rate , now set on 30
    [NSTimer scheduledTimerWithTimeInterval:theInterval target:self
        selector:@selector(animateView:) userInfo:nil repeats:YES];

    - (void)animateView:(NSTimer *)theTimer 
    {
    //    your animation block here....
    Something like..
    view.center = CGPointMake(view.center.x+viewMovement.x,
                    view.center.y+viewMovement.y);

        BOOL collision = view.center.y >= view2.center.y - 16 &&
        view.center.y <= view2.center.y + 16 &&
        view.center.x > view2.center.x - 32 &&
        view.center.x < view2.center.x + 32;

    if(collision)
        viewMovement.y = -viewMovement.y

}

这只是一个例子,相应地实现你的逻辑。