سؤال

How to move continuously spinning UIView with animation blocks? Eg., I have this code for spinning:

- (void)spinView:(UIView *)view {
    [UIView animateWithDuration:0.2f
                          delay:0.0f
                        options:UIViewAnimationOptionCurveLinear
                     animations:^{
                         view.transform = CGAffineTransformRotate(view.transform, M_PI_2);
                     }
                     completion:^(BOOL finished) {
                         if (finished) {
                             [self spinView:view];
                         }
                     }];
}

How to combine it with animation like this:

[UIView animateWithDuration:4.0f animations:^{
    myView.transform = CGAffineTransformTranslate(myView.transform, 400, 0);
}];

I've tried with CGAffineTransformConcat(), UIViewAnimationOptionBeginFromCurrentState, but without success.

هل كانت مفيدة؟

المحلول

Have you try something like,

[UIView animateWithDuration:2.0f animations:^{
    vw.transform = CGAffineTransformTranslate(vw.transform, 400, 0);
    CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    animation.fromValue = [NSNumber numberWithFloat:0.0f];
    animation.toValue = [NSNumber numberWithFloat: 2*M_PI];
    animation.duration = 5.0f;
    animation.repeatCount = 1;
    [vw.layer addAnimation:animation forKey:@"SpinAnimation"];
}];

vw is your view to move. set frame according to your wish.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top