web-dev-qa-db-ja.com

UIViewアニメーションを停止する方法

UIImageViews内にいくつかのUIScrollViewがあり、ユーザーがそのうちの1つを長押しすると小刻みに動きます。 iPad/iPhoneメニューのアイコンを長押ししたときの動作に似ています。

だから私は以下を持っています:

- (void)startWiggling {

    for (UIImageView *touchView in [scrollView subviews]) {

        [UIView beginAnimations:@"wiggle" context:nil];
        [UIView setAnimationDuration:0.1];
        [UIView setAnimationRepeatAutoreverses:YES];
        [UIView setAnimationRepeatCount:FLT_MAX];

        //wiggle 1 degree both sides
        touchView.transform = CGAffineTransformMakeRotation();
        touchView.transform = CGAffineTransformMakeRotation(-0.0174532925);

        [UIView commitAnimations];

    }    

}

- (void)stopWiggling {
    NSLog(@"Stop wiggling");    
}

これは正常に動作します。問題は...ユーザーがボタンを押した後、どうすればstop揺れますか?ボタンがあり、それに接続しているなど、stopWigglingメソッドに到達しているので問題ありません。でもそうなんだ...

  1. これらのUIImageViewsからUIViewアニメーションを削除するにはどうすればよいですか?
  2. このアクションを、デバイスでホームボタンを押すユーザーにバインドできますか?
26
Jules
 #import <QuartzCore/QuartzCore.h>

その後

 [myView.layer removeAllAnimations];

または

[self.view.layer removeAllAnimations];