我正在使用transitionFromView
和UIViewAnimationOptionTransitionFlipFromLeft
。现在,我需要以这种方式组合多个此类过渡,以便我知道整个过渡的完成。
最好的方法是什么?我可以使用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
的所有方法都是类消息。您没有代表交易的对象。