2013-09-18 2 views
0

Я пытаюсь сделать эффект «Spin the wheel» в приложении, и я могу заставить бутылку вращаться, но он останавливается в том же положении. Как я могу остановить его случайным образом? Спасибо всемButton spin in IO

Вот код:

- (IBAction)spin:(id)sender { 
    CABasicAnimation *fullRotation = [CABasicAnimation animationWithKeyPath: @"transform.rotation"]; 
    fullRotation.fromValue = [NSNumber numberWithFloat:0]; 
    fullRotation.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)]; 
    fullRotation.duration = 0.5; 
    fullRotation.repeatCount = 2; 
    [button.layer addAnimation:fullRotation forKey:@"360"]; 
} 

ответ

0

свойство toValue The CABasicAnimation контролирует окончательную позицию анимации. В настоящее время вы устанавливаете его на одно постоянное значение (360 * M_PI/180). Вероятно, вы захотите использовать arc4random() для создания случайного значения и установите для него значение toValue.

Так, например:

float randomRadians = arc4random()/((pow(2, 32)-1)) * M_PI*2; 
fullRotation.toValue = [NSNumber numberWithFloat:randomRadians]; 

Код для случайной величины происходит от этого SO ответа: Obj-c generate a random float(or double) number between 0 and ∏ * 2

Примечания: Я не проверял это решение.

+0

Спасибо большое! Это сработало, но я сделал это по-другому. Нечто подобное - (IBAction) btnRotate: (ID) отправитель { [UIView animateWithDuration: 0.7 анимации:^{ imgRotate.transform = CGAffineTransformMakeRotation (arc4random()/((POW (2, 2) -0.2)) * M_PI * 400); }]; – user2792520