1. ホーム
  2. アイオス

[解決済み】UIView 無限360度回転アニメーション?

2022-04-16 23:10:46

質問

を回転させようとしています。 UIImageView 360度、ネットでいくつかのチュートリアルを見てみました。どれもうまくいきませんでした。 UIView 停止するか、新しい位置にジャンプします。

  • どうすれば実現できますか?

最近試したのは

[UIView animateWithDuration:1.0
                      delay:0.0
                    options:0
                 animations:^{
                     imageToMove.transform = CGAffineTransformMakeRotation(M_PI);
                 } 
                 completion:^(BOOL finished){
                     NSLog(@"Done!");
                 }];

しかし、2*piを使うと、まったく動きません(同じ位置なので)。piだけ(180度)やってみるとうまくいくのですが、もう一度メソッドを呼び出すと逆回転してしまいます。

EDIT :

[UIView animateWithDuration:1.0
                      delay:0.0
                    options:0
                 animations:^{
                     [UIView setAnimationRepeatCount:HUGE_VALF];
                     [UIView setAnimationBeginsFromCurrentState:YES];
                     imageToMove.transform = CGAffineTransformMakeRotation(M_PI);
                 } 
                 completion:^(BOOL finished){
                     NSLog(@"Done!");
                 }];

もうまくいきません。それは 180 度、一瞬停止して、またリセットして 0 度、再び開始されます。

解決方法は?

私の場合、完璧に機能する方法を見つけました(少し修正しました)。 iphone UIImageViewの回転

#import <QuartzCore/QuartzCore.h>

- (void) runSpinAnimationOnView:(UIView*)view duration:(CGFloat)duration rotations:(CGFloat)rotations repeat:(float)repeat {
    CABasicAnimation* rotationAnimation;
    rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * rotations * duration ];
    rotationAnimation.duration = duration;
    rotationAnimation.cumulative = YES;
    rotationAnimation.repeatCount = repeat ? HUGE_VALF : 0;

    [view.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}