4

UIView ブロックベースのアニメーションを使用すると、奇妙な問題が発生します。私のアプリには、スクロール ビューにさまざまな画像が含まれており、デバイスでアプリをしばらく使用すると、UIView アニメーション ブロック (以下のようなもの) のすべてのアニメーションが停止します。アニメーションは処理されます (以下のサンプル コードでは、pageView は移動します) が、この変更はアニメーション化されず、即座に発生します。

[UIView animateWithDuration:0.5 animations:^
{ 
     self.pageView.center = CGPointMake(self.view.frame.size.width/2, 704.0/2);
     self.pageView.transform = CGAffineTransformIdentity;
} 
completion:^(BOOL finished)
{
     NSLog(@"complete");
}];

他の誰かが同様の行動を経験しましたか? 私は 5.1 で iPad を使用していますが、iOS のバージョンに問題があるのでしょうか?

ありがとう、

マイケル

4

3 に答える 3

1

メモリ使用量を確認してください。私はあなたと同じものを見ています - 最終的にすべてのアニメーションが機能しなくなりました。アニメーションも実行されず、完了ブロックも起動しませんでした。

後で再表示したかったため、表示されなくなった多数の UIImageViews を保持していることに気付きました。それらを削除して UIImage を解放すると、問題が解消されました。画像を取り戻す方法を理解する必要がありますが、少なくともアニメーションは期待どおりに機能します。

于 2012-11-26T07:10:42.607 に答える
0

変換を使用している場合、アニメーションを個別に使用すると、アニメーションの動作が非常に予測不能になる可能性があります。これを回避するには、を介してすべての変換を1つの変換に連結し、CGAffineTransformConcatその単一の変換をアニメーション化する必要があります。

于 2012-04-27T11:10:20.110 に答える
0

いくつかのアニメーション オプションを使用してみて、それが役立つかどうかを確認してください。

たとえば、ここではユーザーが対話できるようにし、アニメーション中にビューを再描画できるようにしています。

[UIView animateWithDuration:0.5
                      delay:0
                    options: UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionAllowAnimatedContent   
                 animations:^ {
                    self.pageView.center = CGPointMake(self.view.frame.size.width/2, 704.0/2);
                    self.pageView.transform = CGAffineTransformIdentity;
               } completion:^ (BOOL finished) { 
               } ];
于 2012-04-27T11:43:54.777 に答える