1

私の現在のアプローチは100%のアニメーション、0%のユーザーインタラクションが可能であるため、アプリの残りの部分をフリーズせずに、ビューで連続アニメーションと繰り返しアニメーションをどのように使用できるのでしょうか。これは一種の悪いことです。

アニメーションは一般的に単純です。uilabelをサイレンのように動作させ、アルファプロパティを1から0に変更したり、その逆にしたりします。

したがって、基本的なアニメーションブロックは次のとおりです。

    [UIView animateWithDuration:0.4f
                          delay:0.0f
                        options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionBeginFromCurrentState
                     animations:^(void){warningMessage.alpha = 0;}
                     completion:NULL];    

アプリの制御を失うたびに、バックグラウンド、backgroundthreads、非同期GCDブロックでさえ、それを呼び出そうとしましたが、アニメーションは正常に機能します。(わかりました、アップルのドキュメントはそれがメインスレッドで起こらなければならないと言っています、しかし私は試しました..)

繰り返しになりますが、質問:両方をどのように持つか?そのようにさえ可能ですか?

前もって感謝します!

PS: これがかなりの再投稿である場合は、ここで適切な解決策/質問が見つかりませんでした。

PPS:はい、サイレンがアルファプロパティを変更しないことを私は知っています:P

4

2 に答える 2

1

UIViewAnimationOptionAllowUserInteractionをオプションフラグに追加してみましたか?

于 2011-04-29T21:24:23.547 に答える
1

ええと..uikitでアニメーションを作成するのは確かに簡単です..しかし、私はそれをあまり効率的とは言いません。アルファをアニメートするだけですが、バックグラウンドでさらに多くのことが起こっています。:)

アニメーションはすでに別のスレッドで実行されているため、別のスレッドで開始しても役に立ちません。

解決策として、アプリケーションにCADisplayLinkを登録し、その更新関数でビューのアルファを変更します。これは、常に実行するとはるかに効率的です。

于 2011-04-29T21:26:54.643 に答える