私は常にFlashを使用してきましたが、フレーム間でアルファ値を変更するのは非常に簡単です。 xcode 4でこれを行う方法はありますか?ロゴをアニメーション化していて、2番目のpngが表示され始めている間に最初のpngを非表示にする必要があります。 tnx!
Esqewの方法(iOS 4より前に利用可能であるため、作業をiOS 4だけに制限する予定がない場合は、代わりに使用する必要があります)の代わりに、[UIView animateWithDuration:animations:]
を使用すると、ブロック内でアニメーションを実行できます。例えば:
[UIView animateWithDuration:3.0 animations:^(void) {
image1.alpha = 0;
image2.alpha = 1;
}];
かなりシンプルですが、これもiOS 4でのみ利用できるので、覚えておいてください。
その他の解決策、フェードインとフェードアウト:
//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;
}];
}];
これは実際にはかなり単純です。アニメーションを発生させたい場所に次のコードを配置します。
[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
...動作するはずです。