我正在使用transitionFromViewUIViewAnimationOptionTransitionFlipFromLeft。现在,我需要以这种方式组合多个此类过渡,以便我知道整个过渡的完成。

最好的方法是什么?我可以使用animateWithDuration之类的东西,然后在动画块中放置多个transitionFromView吗?如果是,那么两个消息的持续时间参数是否会相互干扰?在这种情况下,这些持续时间参数分别意味着什么?

有没有更好的方法来翻转所有带有完成块的视图?

最佳答案

您可以使用 CATransaction 轻松完成此操作。

首先,如果尚未将QuartzCore框架添加到您的目标中。

接下来,如果尚未添加#import <QuartzCore/QuartzCore.h>,则将其添加到.m文件的顶部。

在创建过渡的语句之前执行[CATransaction begin]。然后为新事务设置完成块。接下来,创建动画。最后,提交事务。这是一个例子:

- (IBAction)flipButtonWasTapped:(id)sender {
    [CATransaction begin]; {
        [CATransaction setCompletionBlock:^{
            NSLog(@"all animations complete!");
        }];
        [UIView transitionFromView:self.topFrontLabel
            toView:self.topBackLabel duration:1
            options:UIViewAnimationOptionTransitionFlipFromRight
            completion:nil];
        [UIView transitionFromView:self.bottomFrontLabel
            toView:self.bottomBackLabel duration:1.5
            options:UIViewAnimationOptionTransitionFlipFromRight
            completion:nil];
    } [CATransaction commit];
}

请注意,在创建任何动画之前,必须将完成块设置为。完成块仅等待设置了后添加了的动画。

还要注意,CATransaction的所有方法都是类消息。您没有代表交易的对象。

10-08 17:53