我只是试图使用以下方法顺时针旋转UIImageView 360度:
#define DEGREES_TO_RADIANS(angle) (angle / 180.0 * M_PI)
和这个
imageView.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(360));
然而,即使调用它们,imageView也根本不会旋转。我在做什么不对劲?我不想使用CAAnimations所以请不要建议我这样做。
谢谢!
答案 0 :(得分:2)
问题在于Core Animation将通过查找从当前状态到新状态的最直接路由来应用动画。旋转0度与360度旋转相同,因此最终转换的最直接路径是绝对不做任何事。
180度的两个步骤会有问题,因为有两个同样直接的路线,从0到180度,核心动画可以选择。所以你可能需要将动画分成三个步骤。第一个使用UIViewAnimationOptionCurveEaseIn
,第二个使用UIViewAnimationOptionCurveLinear
,最后一个使用UIViewAnimationOptionCurveEaseOut
。
答案 1 :(得分:0)
也许是因为变换不是在一段时间内发生的。在我看来,只要它不能随着时间的推移而感知,你可能需要在一段时间内执行变换或变换序列。
答案 2 :(得分: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];
}];
}