Domanda

Sono alla ricerca di un modo per creare un menu in un'applicazione per iPhone che consente ai pulsanti per ruotare intorno ad un punto centrale. Per mettere questo in termini visivi:. I pulsanti sarebbero pianeti e il centro è il sole

  • ciò consentirebbe all'utente di 'spin' i pulsanti attorno al percorso circolare.

** un esempio reale di questo sarebbe il menù Poynt per la loro applicazione per iPhone. **

Ho iniziato con questo codice, che ho trovato da un post di mahboudz qui su 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"];
}

C'è un post interessante a rotazione qui su SO: link testuale

In ogni caso, posso ruotare un pulsante - ma non intorno ad un percorso prestabilito (come lo scenario pianeta).

Qualsiasi aiuto sarebbe apprezzato.

È stato utile?

Soluzione

Si sta ruotando il tasto intorno ad esso il proprio centro, come definito dalla proprietà "frame". Inoltre, è necessario modificare la struttura del pulsante a una diversa coordinata allo stesso tempo si stanno ruotando esso. Qualcosa di simile a questo:

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top