0

ボタンを中心点を中心に回転できるメニューをiPhoneアプリで作成する方法を探しています。これを視覚的に表現すると、ボタンは惑星で、中心は太陽です。

  • これにより、ユーザーは円形のパスの周りでボタンを「回転」させることができます。

**これの実際の例は、iPhoneアプリのPoyntメニューです。****

私はこのコードを使い始めました。これは、ここSOのmahboudzによる投稿から見つけました。

- (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にローテーションに関する興味深い投稿があります:リンクテキスト

とにかく、ボタンを回転させることはできますが、(惑星のシナリオのように)あらかじめ決められたパスの周りを回転させることはできません。

どんな助けでもいただければ幸いです。

4

1 に答える 1

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