我在viewController中有一个循环动画
- (void)moveAnimating
{
[UIView animateWithDuration:2.0f animations:^{
_backgroundView.center = CGPointMake(self.center.x , self.center.y - kMoveDistanceHeight);
} completion:^(BOOL finished) {
if (_backgroundView.animating)
{
[_backgroundView moveAnimating];
}
}];
}我想在viewController viewWillDisappear的时候停止这个动画
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
_backgroundView.animating = NO;
[_backgroundView.layer removeAllAnimations];
}因为动画与dismissViewcontrollerAnimation冲突。
问题:
[_backgroundView.layer removeAllAnimations];不工作..。
如何停止动画?
帮帮我,谢谢。
发布于 2015-01-29 08:00:50
您正在正确地取消动画:
[_backgroundView.layer removeAllAnimations];但你可能忘了进口石英纤维。H:
#import <QuartzCore/QuartzCore.h>如果这样做没有帮助的话:
[CATransaction begin];
[_backgroundView.layer removeAllAnimations];
[CATransaction commit];如果没有帮助,请尝试将这一行添加到上面的代码中:
[CATransaction flush];发布于 2015-11-24 02:20:15
@KlimczakM的解决方案对我没有用。
我正在运行一个移动和图像的“animateWithDuration”块,并使用下一段代码暂停并恢复动画:
-(void)pauseLayer:(CALayer*)layer {
CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
layer.speed = 0.0;
layer.timeOffset = pausedTime;
}
-(void)resumeLayer:(CALayer*)layer {
CFTimeInterval pausedTime = [layer timeOffset];
layer.speed = 1.0;
layer.timeOffset = 0.0;
layer.beginTime = 0.0;
CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
layer.beginTime = timeSincePause;
}这是来自此链接的苹果文档。
https://stackoverflow.com/questions/28209448
复制相似问题