好的伙计们,我有一个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走出它的路径。
感谢任何帮助。
答案 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
}];
}
希望它有所帮助。
干杯。