我正在寻找一种在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
无论如何,我可以旋转一个按钮 - 但不是在预定的路径周围(就像行星场景一样)。
任何帮助都将不胜感激。
答案 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)