IOS imageView动画多次

时间:2014-08-04 09:33:05

标签: ios animation imageview

好的伙计们,我有一个imageview,我想在一些按钮上设置动画。 我想将imageview从起点移动到终点。动态分配终点,然后用当前终点替换起点。

假设有按钮:b1,b2,b3,b4。

我想将imageView从b1移动到b4。我得到了起点和终点,我能够从头到尾移动imageView。但问题是,我想逐步移动imageView。即b1-b2,b2-b3,b3-b4。 我正在使用一种方法,根据开始和结束动态更新imageView的x和y。 我尝试在每次运行的for循环中调用相同的方法(b1-b2,b2-b3,b3-b4)。 但我只能看到最后一个动作的动作。我还使用

延迟了方法调用
[self performSelector:@selector(myAnimationMethod) withObject:nil afterDelay:1.0];

但仍然只有最后一个动作可见。 再次,我知道如果我使用块动画,我不会需要这个。但我已经尝试过了,结果是一样的。而且我的按钮不是直线,从头到尾移动imageView,看起来按钮按钮,但是它们是锯齿形的,所以我不想让imageView走出它的路径。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

代码中的问题是for(..)循环,它不会等待动画。那么你想要做的是,去 GCD 或者玩

animateWithDuration:delay:options:animations:completion:

答案 1 :(得分:0)

最简单的方法是通过为按钮分配Tag来定义顺序,并定义imageview将移动到的位置的下一个按钮。您应该在完成第一个按钮时执行动画,请参见下文.. < / p>

-(void)animate{

    if(nextTag>lastButtonTag)
        return; //STOP

    nextButtonToMove=(UIButton *)[self.view viewWithTag:nextTag];
    nextTag++;

    [UIView animateWithDuration:.3 animations:^{
        animatableView.center=nextButtonToMove.center;
    } completion:^(BOOL finished) {
        [self animate];//Call the function again on finish
    }];

}

希望它有所帮助。

干杯。