Pergunta

Eu estou procurando uma maneira de criar um menu em um aplicativo para iPhone que permite que os botões para girar em torno de um ponto central. Para colocar isso em termos visuais:. Os botões seria planetas e do centro é o sol

  • isso iria permitir que o usuário 'spin' os botões ao redor do caminho circular.

** um exemplo real de que este seria o menu de Poynt para o seu aplicativo para iPhone. **

Eu comecei com este código, que eu encontrei de um post por mahboudz aqui no 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"];
}

Há um interessante post na rotação aqui no SO: texto do link

De qualquer forma, eu posso girar um botão - mas não em torno de um caminho pré-determinado (como o cenário planeta).

Qualquer ajuda seria apreciada.

Foi útil?

Solução

Você está girando o botão em torno de seu próprio centro, conforme definido pela propriedade "frame". Além disso, você precisa mudar a estrutura do botão para uma coordenadas diferentes, ao mesmo tempo que você está rodando-o. Algo parecido com isto:

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top