iphone的UIImageView旋转
答
如果你的意思是,旋转图像?“你怎么做的图像追随圆形路径”,那么伪是:
image.x = circleCentre.x + cos(angle) * circleRadius;
image.y = circleCentre.y + sin(angle) * circleRadius;
angle += 5;
答
This question要求同样的事情,尽管换言之。在这个问题中的答案以及this question应该提供一种方法来为UIView(UIImageView仅仅是它的一个子类)创建一个关于360度或更多中心的动画。
答
无论是小于完整旋转还是多次旋转,都可以将视图旋转一定数量的弧度,而无需将旋转分割成几部分。作为一个例子,下面的代码会在一个指定的秒数内旋转一个视图,每秒一次。您可以轻松修改它以旋转一定数量的旋转视图,或旋转一定数量的弧度。
- (void) runSpinAnimationWithDuration:(CGFloat) duration;
{
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 = 1.0;
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[myView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}
答
基于mahboudz的回答,您可以将其设置设定为无限旋转:rotationAnimation.repeatCount = HUGE_VALF;
答
创建动画
- (CABasicAnimation *)spinAnimationWithDuration:(CGFloat)duration clockwise:(BOOL)clockwise repeat:(BOOL)repeats
{
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
anim.toValue = clockwise ? @(M_PI * 2.0) : @(M_PI * -2.0);
anim.duration = duration;
anim.cumulative = YES;
anim.repeatCount = repeats ? CGFLOAT_MAX : 0;
return anim;
}
将它添加到一个视图
CABasicAnimation *animation = [self spinAnimationWithDuration:1.0 clockwise:YES repeat:YES];
[self.spinningView.layer addAnimation:animation forKey:@"rotationAnimation"];
这个答案如何不同来自@ mahboudz的回答?如果大多数函数都返回对象,而不是仅仅操纵一些对象,那么您将拥有更简洁的代码。
也许你对旋转和革命感到困惑。上述问题是关于革命的。 – Biranchi 2010-04-30 05:28:31