2012-08-04 56 views
0

我想制作一个IBAction,当被调用时会使图像“流畅地移动”一定量的像素。现在我有一个让图像向左移动10个像素的方法,但它只是传送到那里。我希望图像移过来,就像它的行走不是神奇地结束在那里。使图像更“流畅地”移动

这里是我有:

- (IBAction)moveImageLeft:(id)sender 
{ 
    y = y + 10; 
    myImageView.frame = CGRectMake(x, y, 45, 56); 
} 
+0

查看动画。我不使用iOS,但'UIView'的'beginAnimation:'等可能值得一看? – Vervious 2012-08-04 04:26:58

回答

2
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:0.5]; 
[UIView setAnimationDelay:1.0]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 

y = y + 10; 
myImageView.frame = CGRectMake(x, y, 45, 56);   
[UIView commitAnimations]; 
+0

Good Work .. + 1我也是。 – 2012-08-09 05:09:25

5

@酒窝的答案是正确的。但是,仅供参考,这是另一种方式。它被称为动画块,在我看来,使整个动画过程更容易。

[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ 
    y = y + 10; 
    myImageView.frame = CGRectMake(x, y, 45, 56); 
}completion:^(BOOL finishedAnimating){ 
    if (finishedAnimating == YES) { 
     NSLog(@"animation finished");//you can put your own completion handler events here 
    } 
}]; 
+0

它有什么帮助? – user1438042 2012-08-04 06:56:09

+1

@ user1438042它一切都一样,我只是认为它是一种更简洁,更有组织的动画表演方式。 – 2012-08-04 06:57:21

+0

好了1先生你先生 – user1438042 2012-08-04 07:02:42