围绕中心旋转按钮

时间:2010-03-11 22:22:20

标签: iphone animation rotation cabasicanimation

我正在寻找一种在iPhone应用程序中创建菜单的方法,该应用程序允许按钮围绕中心点旋转。用视觉术语表示:按钮是行星,中心是太阳。

  • 这将允许用户“旋转”圆形路径周围的按钮。

**这个实际的例子就是他们的iPhone应用程序的Poynt菜单。 **

我开始使用这段代码,我在mahboudz的帖子中找到了SO:

- (void) runSpinAnimationWithDuration:(UIView*)animatedView withDuration:(CGFloat) duration;
{
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * 1 * duration ];
rotationAnimation.duration = duration;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 1.0; 
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[animatedView.layer  setAnchorPoint:CGPointMake( 0.5, 0.5 )];
[animatedView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}

在SO上有一篇关于轮换的有趣帖子:link text

无论如何,我可以旋转一个按钮 - 但不是在预定的路径周围(就像行星场景一样)。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:-1)

您正在围绕它自己的中心旋转按钮,由“frame”属性定义。此外,您需要在旋转按钮的同时将按钮的框架更改为不同的坐标。像这样:

CGFloat angle = rotationAnimation.toValue;
CGFloat radius = 50;
CGPoint rotationCenter = CGPointMake(100,100); 
b.frame = CGRectMake(rotationCenter.x + radius * cos(angle),  rotationCenter.y + radius * sin(angle), b.frame.size.width, b.frame.size.height)