使 UIimage 每 1 秒移动一次

making a UIimage move every 1 second

我有一个 UIimage,我想根据某些方程式(物理射弹时间方程式)给出的 X 和 Y 移动它,我希望它每 1 秒移动一次,这样它在用户看来就好像它实际上是移动不仅仅是在最后一个位置消失和重新出现,而且我认为给出的位置是错误的。对于其中一个或两个问题的任何帮助,我将不胜感激。

到目前为止我试过这个:

运动函数:

func moveCannonBall(toX:Int , toY:Int ){
    var frm: CGRect = ballimageview.frame
    frm.origin.x = frm.origin.x + CGFloat(toX)
    frm.origin.y = frm.origin.y - CGFloat(toY)
    ballimageview.frame = frm
}

点击按钮时,它应该接受用户的输入(重力、角度和初始速度)

@IBAction func getAlpha( sender:AnyObject){
    gravity = Float(g[pickerView.selectedRow(inComponent: 0)])
    xMax = ((V0*V0)*sin(2.0*angle))/gravity

它应该每 1 秒停止一次,但只有计算每 1 秒暂停一次,并且 UIimage 只是消失并重新出现

    while Int(toX) < Int(xMax)  {
        sleep(1)
        t = t + 1

        toX = V0*cos(angle)*t
        toY = -0.5*gravity*t*t + V0*sin(angle)*t

        moveCannonBall(toX: Int(toX), toY: Int(toY))
    }
}

感谢任何帮助。

正如 Losiowaty 所说 UIView.animationWithDuration 是必经之路。查看此答案以了解语法: