动画alpha变化

时间:2011-05-19 16:37:03

标签: objective-c ios animation png alpha

我一直使用Flash,并且很容易在一帧和另一帧之间更改alpha值。有没有办法在xcode 4中执行此操作?我正在制作一个徽标,我需要第一个png消失而第二个png开始出现。 TNX!

3 个答案:

答案 0 :(得分:50)

除了esqew的方法(在iOS 4之前可用,所以你可能应该使用它,如果你不打算将工作限制在iOS 4),还有[UIView animateWithDuration:animations:],它允许你在一个街区做动画。例如:

[UIView animateWithDuration:3.0 animations:^(void) {
    image1.alpha = 0;
    image2.alpha = 1;
}];

相当简单,但同样,这只适用于iOS 4,所以请记住这一点。

答案 1 :(得分:11)

其他解决方案,淡入和淡出:

//Disappear
[UIView animateWithDuration:1.0 animations:^(void) {
       SplashImage.alpha = 1;
       SplashImage.alpha = 0;
}
completion:^(BOOL finished){
//Appear
   [UIView animateWithDuration:1.0 animations:^(void) {
      [SplashImage setImage:[UIImage imageNamed:sImageName]];
      SplashImage.alpha = 0;
      SplashImage.alpha = 1;
 }];
}];

答案 2 :(得分:6)

实际上这很简单。将以下代码放在要进行动画的位置:

[UIView beginAnimations:NULL context:NULL];
[UIView setAnimationDuration:3.0]; // you can set this to whatever you like
/* put animations to be executed here, for example: */
[image1 setAlpha:0];
[image2 setAlpha:1];
/* end animations to be executed */
[UIView commitAnimations]; // execute the animations listed above

您可以在this document中了解有关这些方法的更多信息。

如果你想使用你在这个问题的评论中提到的结构:

[UIView beginAnimations:NULL context:NULL];
[UIView setAnimationDuration:3.0]; // you can set this to whatever you like
/* put animations to be executed here, for example: */
[[introAnimation objectAtIndex:0] setAlpha:0];
[[introAnimation objectAtIndex:1] setAlpha:1];
/* end animations to be executed */
[UIView commitAnimations]; // execute the animations listed above

......应该有用。