1

我正在transitionFromView使用UIViewAnimationOptionTransitionFlipFromLeft. 现在我需要以这种方式组合这些转换的数量,以便我知道整个转换的完成情况。

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

有没有更好的方法来翻转多个视图和完成块?

4

1 回答 1

2

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

首先,将 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都是类消息。您没有得到代表交易的对象。

于 2013-03-11T18:01:31.263 回答