如何一次翻转多个视图?

时间:2013-03-11 17:49:03

标签: ios animation uiview

我正在使用transitionFromView UIViewAnimationOptionTransitionFlipFromLeft。现在我需要在方式中结合多个这样的转换,以便我知道整个转换的完成。

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

是否有更好的方法可以使用完成块翻转多个视图?

1 个答案:

答案 0 :(得分:2)

您可以使用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的所有方法都是类消息。您没有得到代表交易的对象。