了解UIAnimation

nom*_*omi 1 iphone uianimation

我试图使用以下代码来执行一些动画

-(void) performSlidingfromX:(int) xx fromY:(int) yy 
{
UIImageView *Image= [self getImage];

[UIView beginAnimations:nil context:NULL];  
[UIView setAnimationDuration: 1.0];
[UIView setAnimationBeginsFromCurrentState:true];
[UIView setAnimationCurve: UIViewAnimationCurveEaseOut];
[token setFrame:CGRectMake(xx, yy, 64, 64)];
[UIView commitAnimations];

}
Run Code Online (Sandbox Code Playgroud)

我在for循环中调用它

for (i = 0; i < totMoves; i++) {
    Moment *m = [moments objectAtIndex:i];
    int xx= [m X];
    int yy= [m Y];

    [self performSlidingfromX:xx fromY:yy];

}
Run Code Online (Sandbox Code Playgroud)

我面临的问题是它的动画到最终位置,例如,如果我为xx输入以下时刻,yy

0,0
50,0
50,50
Run Code Online (Sandbox Code Playgroud)

它将图像从0,0到50,50对角移动,我希望它首先滑动到水平然后垂直滑动.

任何帮助?

谢谢

Sen*_*neL 9

使用新的块动画.它简单而稳定:

[UIView animateWithDuration:0.5 
                          delay:0 
                        options:UIViewAnimationOptionBeginFromCurrentState
                     animations:^{
                         [token setFrame:CGRectMake(xx, 0, 64, 64)];
                         //here you may add any othe actions, but notice, that ALL of them will do in SINGLE step. so, we setting ONLY xx coordinate to move it horizantly first.
                     } 
                     completion:^(BOOL finished){

                         //here any actions, thet must be done AFTER 1st animation is finished. If you whant to loop animations, call your function here.
                         [UIView animateWithDuration:0.5 
                                               delay:0 
                                             options:UIViewAnimationOptionBeginFromCurrentState 
                                          animations:^{[token setFrame:CGRectMake(xx, yy, 64, 64)];} // adding yy coordinate to move it verticaly} 
                                          completion:nil];
                     }];
Run Code Online (Sandbox Code Playgroud)