我正在创建一个加载栏,如果采取特定操作,我想暂停和反转。
我在下面有以下代码,可以在另一个视图中设置动画。我将如何暂停此动画并在动画对象的那个时间点在CURRENT帧上应用另一个动画。我希望能够在当前动画中的任何给定时间将此栏设置为0宽度标记。
-(void)animateProgressBar
{
CGRect endingFrame = self.frame;
[UIView animateKeyframesWithDuration:self.time delay:0.0 options:0 animations:^{
[UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:1.0 animations:^{
self.loadingBar.frame = endingFrame;
}];
} completion:^(BOOL finished) {
NSLog(@"TADA");
}];
}
答案 0 :(得分:3)
如果您想从现在开始播放新动画,只需使用UIViewKeyframeAnimationOptionBeginFromCurrentState
选项启动新动画(或者如果只是animateWithDuration
,请使用UIViewAnimationOptionBeginFromCurrentState
)
答案 1 :(得分:2)
您可以导入QuartzCore框架,添加
#import <QuartzCore/QuartzCore.h>
您可以通过调用以下内容删除现有动画:
[self.loadingBar.layer removeAllAnimations];
之后你可以开始新的动画了。 如果你想暂停它,你必须引用当前动画:
CALayer *currentLayer = self.loadingBar.layer.presentationLayer;
你必须保存它:
self.loadingBar.layer.transform = currentLayer.transform;
你可以在另一个[UIView animateWith .....方法。