0

アニメーションの再生が停止しUILabelた正確な瞬間にを更新したいと考えています。UIImageView

これに対する私の試みは、使用することでした-

[self performSelector:@selector(updateLabels) withObject:nil afterDelay:imageView.animationDuration];

updateLabelsラベルを更新するメソッドはどこにありますか。

これは、最初の 2 つのアニメーションでは機能しません。ただし、最初の 3 ~ 4 回再生した後は機能します。

アニメーションの画像を保持するimageNamedを埋めるために使用しています。NSArrayそして、私の調査から、imageNamedがオブジェクトをキャッシュしていることに気付きました。したがって、最初の 3 回または 4 回の実行での遅延は、キャッシュからの遅延が原因であると想定しています。

とにかくこれを克服する方法はありますか?imageNamed(最初の 3 つまたは 4 つの後の他のすべてのアニメーション サイクルで正常に動作していると述べたように、使用から変更しないことが望ましい)。

4

2 に答える 2

0

animationDidStop:アニメーションが停止したときにアクションを実行するメソッドを追加します。

  - (void)animationDidStop:(CAAnimation*)animation finished:(BOOL)finished 
 {
    //Update your label
 }

setDelegateに追加することを忘れないでselfくださいuiimageview.animation

于 2012-08-21T12:02:24.103 に答える
0

これを試しましたか: (より良い認識ではありませんが) // 例として

h.file:

UIImageView *im;

im .m - ファイル:

 -(void) viewDidLoad
 {
    [super viewDidLoad];

    im = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
   UIImage *firstIm = [UIImage imageNamed:@"foo.png"];  // example pictures
   UIImage *secondIm = [UIImage imageNamed:@"bar.png"];
   im.animationImages = [NSArray arrayWithObject:firstIm, secondIm, nil];
   im.animationDuration = 1.0;
   im.animationRepeatCount = 4;
   [im startAnimating];
   [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateLabels) userInfo:nil repeats:YES];

}

-(void) updateLabels
{
   if (![im isAnimating]])
   {
      //Update your label
   }
}

-imageNamed の画像を使用しますが、この場合、終了アニメーションのチェックが適切ではありません。とにかくあなたを助けるかもしれません。

于 2012-08-21T13:39:37.703 に答える