2

アプリでアニメーションを使用していて混乱します。アニメーションがデバイスで遅れているためです。シミュレーターではすべて問題ないようです。まずは使ってみた

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

そして、アニメーションをコミットする前に、「if」ブロックを含む約30行のコードがあったので、これが問題を引き起こす可能性があると思いましたが、使用を開始しました

[UIView animateWithDuration:0.3
                                  delay:0.0
                                options: UIViewAnimationCurveEaseIn
                             animations:^{
                                 mainView.frame = CGRectMake(0, 0, 320, 420);
                                 buttonsView.transform = CGAffineTransformMakeTranslation(0, 68);
                                 radioBar.transform = CGAffineTransformMakeTranslation(0, -50);
                                 vk_controller.view.frame = CGRectMake(0, 0, 320, 440);
                             } 
                             completion:^(BOOL finished){
                                 button.isHiddenDown = YES;
                             }];

「if」ブロックに関してですが、ラグは残っているようです。ボタンを押すと、約 0.5 ~ 1 秒の遅延があり (なぜですか?)、アニメーションが開始されます。しかし、私がテーブルビューにいるとき

[UIView animateWithDuration:0.3
                                  delay:0.0
                                options: UIViewAnimationCurveEaseIn
                             animations:^{
                                 mainView.frame = CGRectMake(0, 0, 320, 420);
                                 buttonsView.transform = CGAffineTransformMakeTranslation(0, 68);
                                 radioBar.transform = CGAffineTransformMakeTranslation(0, -50);
                                 goha_news_controller.view.frame = CGRectMake(0, 0, 320, 420);
                                 goha_news_controller.feed_table.frame = CGRectMake(0, 0, 320, 420);
                                 if(goha_news_controller.backgroundView)
                                 {
                                     goha_news_controller.backgroundView.frame = CGRectMake(0, 0, 320, 420);
                                     goha_news_controller.newsDetailView.frame = CGRectMake(0, 0, 320, 420);
                                 }

                             } 
                             completion:^(BOOL finished){
                                 button.isHiddenDown = YES;
                             }];

アニメーションの前の予期しない遅延に加えて、バーストのある過酷なアニメーションがあります。
なぜそれが起こるのか、どうすれば修正できるのか、誰でも説明できますか?

4

3 に答える 3

5

別の考えられる原因。画面上のビューまたはレイヤーのいずれかでシャドウを使用していますか?iOSは、シャドウを使用したアニメーションをまったくうまく処理しません。

于 2012-05-15T18:30:25.660 に答える
1

アニメーション中にコントロールで画像のサイズを変更すると、遅延が発生する可能性があります。これは、画像のサイズ変更は CPU にとって非常に負荷の高いプロセスであるためです。アニメーションを実行して画像を変更する前に、画像のサムネイルを作成する必要があります。

また、ブロックを使用してアニメーション化する代わりに、Begin アニメーションを使用してみてください。アニメーションをコミットします。

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.75];
// Here some more animation settings
// Here your animations 
[UIView commitAnimations];
于 2012-05-15T10:38:05.683 に答える
1

シミュレーターを使用してパフォーマンスを測定することはできません。それは、デバイスとはまったく異なる (良いか悪いかだけでなく) パフォーマンス特性を持っています (デバイスも世代ごとに異なります)。

ステートメントが大幅な遅延を引き起こしていない場合。彼らは非常に安いです。

パフォーマンスの問題は、おそらく別の場所にあります。あなたが示したコードには、明らかなパフォーマンスの問題のように見えるものは何もありません。

于 2012-05-15T08:30:29.053 に答える