0
Mit einem Klick wird ImageView gedreht und kehrt dann in den ursprünglichen Zustand zurück. Bei wiederholten schnellen Klicks kehrt die Bildansicht jedoch nicht in den ursprünglichen Zustand zurück. Irgendwelche Ideen warum nicht? Hier ist der Code:CGAffineTransformRotate kehrt nach wiederholten Klicks nicht in den ursprünglichen Zustand zurück
int repeatCounter = 20;
NSLog(@"Rotate animate started");
[imageView.layer removeAllAnimations];
// Set image
if ([imageView isEqual:rideImageView]){
[rideImageView setImage:rideImage];
}
else{
[crashImageView setImage:crashImage];
}
CGAffineTransform rotateStart = CGAffineTransformRotate(imageView.transform, 0.2);
CGAffineTransform rotateEnd = CGAffineTransformRotate(imageView.transform, 0.0f);
// this spin completes 360 degrees every 2 seconds
[UIView animateWithDuration:duration/repeatCounter
delay:0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
[UIView setAnimationRepeatAutoreverses:YES];
[UIView setAnimationRepeatCount:repeatCounter];
imageView.transform = rotateStart;
}
completion:^(BOOL finished) {
NSLog(@"Rotate animate completed");
imageView.transform = rotateEnd;
if (finished) {
NSLog(@"Rotate animate finished but after repeated clicks is permanently rotated");
if ([imageView isEqual:rideImageView]){
[rideImageView setImage:rideLabelledImage];
}
else{
[crashImageView setImage:crashLabelledImage];
}
}
}
];
Ich glaube, Sie ein Flag benötigen, und wenn die Animation auf ist nicht anfangen, eine andere –
Nette Idee, Reinier, aber wo bekommt man den Griff, wenn Animieren zu überprüfen? – TomV
Sie können eine if-Prüfung vor dem Animate-Block nach dem setzen Sie die Animationsvariable auf True und im Ende Callback setzen Sie die Animationsvariable auf false, kann ich eine Antwort geben, wenn Sie möchten –