2012-12-04 97 views
0

我只是想利用顺时针旋转这一个UIImageView 360度:使用UIView动画旋转UIImageView 360度?

#define DEGREES_TO_RADIANS(angle) (angle/180.0 * M_PI) 

imageView.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(360)); 

然而ImageView的完全不旋转即使是那些被调用。我正在做什么错?我不想使用CAAnimations,所以请不要推荐我这样做。

谢谢!

回答

2

问题是,Core Animation将通过查找从当前状态到新状态的最直接路线来应用动画。 0度的旋转与360度的旋转相同,因此到最终变换的最直接路线是完全不做任何事情。

180度的两个步骤会产生问题,因为从0到180度有两条同样直接的路线,核心动画也可以选择。所以你可能需要将动画分成三个步骤。用UIViewAnimationOptionCurveEaseIn做第一个,用UIViewAnimationOptionCurveLinear做第二个,用UIViewAnimationOptionCurveEaseOut做最后一个。

0

也许是因为转换不会持续一段时间。在我看来,只要不能随着时间的推移感知,你可能需要在很短的时间内完成变换或变换序列。

0

这是Tommy的答案启发的代码。

我用

NSInteger step; 

来跟踪图像视图当前旋转度。

- (void)startAnimation 
{ 
    [UIView animateWithDuration:0.5f 
          delay:0.0f 
         options:UIViewAnimationOptionCurveLinear 
        animations:^{ 
     imageView.transform = CGAffineTransformMakeRotation(120 * step/180.0f * M_PI); 
    } 
        completion:^(BOOL finished) { 
     step++; 
     // rotation completed, reset for the next round 
     if (step == 4){ 
      step = 1; 
     } 

     // perform the next rotation animation 
     [self startAnimation]; 
    }]; 
}