web-dev-qa-db-ja.com

アニメーションのアルファ変更

私は常にFlashを使用してきましたが、フレーム間でアルファ値を変更するのは非常に簡単です。 xcode 4でこれを行う方法はありますか?ロゴをアニメーション化していて、2番目のpngが表示され始めている間に最初のpngを非表示にする必要があります。 tnx!

26
Melisa D

Esqewの方法(iOS 4より前に利用可能であるため、作業をiOS 4だけに制限する予定がない場合は、代わりに使用する必要があります)の代わりに、[UIView animateWithDuration:animations:]を使用すると、ブロック内でアニメーションを実行できます。例えば:

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

かなりシンプルですが、これもiOS 4でのみ利用できるので、覚えておいてください。

52
nil

その他の解決策、フェードインとフェードアウト:

//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;
 }];
}];
11
ChavirA

これは実際にはかなり単純です。アニメーションを発生させたい場所に次のコードを配置します。

[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

これらのメソッドの詳細については このドキュメント を参照してください。

この質問へのコメントで言及した構造で作業したい場合:

[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

...動作するはずです。

6
esqew