3

重複の可能性:
UIView アニメーションをキャンセルしますか?

次のアニメーションがあり、ボタンを押したときに停止したい。どうすればできるのか教えてください。方法がわかりません。ありがとう。

-(void)animationLoop:(NSString *)animationID finished:(NSNumber *)finished context:(void    *)context 
{
[UIView beginAnimations:@"Move randomly" context:nil]; 
[UIView setAnimationDuration:1]; 
// [UIView setAnimationBeginsFromCurrentState:NO];


CGFloat x = (CGFloat) (arc4random() % (int) self.bounds.size.width); 
CGFloat y = (CGFloat) (arc4random() % (int) self.bounds.size.height); 

CGPoint squarePostion = CGPointMake(x, y); 
strechView.center = squarePostion; 

[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(animationLoop:finished:context:)];

[UIView commitAnimations];

} 
4

4 に答える 4

3

あなたはこれを行うことができます:

[self.view.layer removeAnimationForKey:@"Move randomly"];

[self.view.layer removeAllAnimations]これは、保持したい他のアニメーションを削除する可能性があるため、呼び出すよりも効果的です。

于 2012-06-19T00:18:46.197 に答える
0

NSTimerを使用することをお勧めします。

NSTimer *myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(yourAnimation) userInfo:nil repeats:YES];

- (void)responseToButton:(UIButton *) _button {
    //when you want to stop the animation
    [myTimer invalidate];
}

- (void)yourAnimation {
      // move the view to a random point
}

さらに、NSTimerが別のスレッドで動作するように設定して、TimeInterval値が非常に小さい場合でもメインスレッドが応答できるようにすることができます。

于 2012-06-19T04:09:58.677 に答える
0

現在アニメーション化されているオブジェクト/プロパティを変更するだけです。アニメーションを停止します。

于 2012-06-18T22:53:44.390 に答える