0

我正在寻找一种在 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

无论如何,我可以旋转一个按钮 - 但不能围绕预定的路径(如行星场景)。

任何帮助,将不胜感激。

4

1 回答 1

-1

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

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)
于 2010-03-12T01:18:30.250 回答