我正在使用transitionFromView
UIViewAnimationOptionTransitionFlipFromLeft
。现在我需要在方式中结合多个这样的转换,以便我知道整个转换的完成。
最好的方法是什么?我可以使用animateWithDuration
之类的内容,然后在动画块中添加多个transitionFromView
吗?如果是,那么两个消息的持续时间参数会相互干扰吗?在这种情况下,每个持续时间参数意味着什么?
是否有更好的方法可以使用完成块翻转多个视图?
答案 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
的所有方法都是类消息。您没有得到代表交易的对象。