如何暂停uiview动画?
Posted
技术标签:
【中文标题】如何暂停uiview动画?【英文标题】:how to pause uiview animation? 【发布时间】:2014-10-26 23:50:03 【问题描述】:如何暂停 uiview 动画并将其留在原处?
//#define ANIMATION_WORM_OPTIONS (UIViewAnimationOptionCurveLinear|
// UIViewAnimationOptionBeginFromCurrentState)
- (IBAction)pressUp:(id)sender
[self.game wormUp];
[self.gameScene.wormView.layer removeAllAnimations];
[UIView animateWithDuration:5 delay:0 options:ANIMATION_WORM_OPTIONS
animations:^
[self.gameScene.wormView moveUp];
completion:^(BOOL finished)
];
- (IBAction)pressRight:(id)sender
[self.game wormRight];
[UIView animateWithDuration:5 delay:0 options:ANIMATION_WORM_OPTIONS
animations:^
[self.gameScene.wormView moveRight];
completion:^(BOOL finished)
];
例如,这是我想要做的:
当我第一次点击“右”时,一条蠕虫会向右移动。
然后当我在蠕虫向右移动时点击“向上”,蠕虫应该停止并向上。
我的代码中的问题是removeAllAnimations
将首先将蠕虫放到第一个动画结束的末尾,然后开始上升。
【问题讨论】:
【参考方案1】:您需要将视图的框架更改为停止位置框架。只需在 view.layer 上执行 removeAllAnimation 之前添加以下内容。
self.theView.frame = [self.theView.layer.presentationLayer frame];
【讨论】:
【参考方案2】:CFTimeInterval pausedTime = [self.gameScene.wormView.layer convertTime:CACurrentMediaTime() fromLayer:nil];
self.gameScene.wormView.layer.speed = 0.0;
self.gameScene.wormView.layer.timeOffset = pausedTime;
【讨论】:
以上是关于如何暂停uiview动画?的主要内容,如果未能解决你的问题,请参考以下文章
呈现另一个 UIViewController 时 UIView 动画暂停
如何暂停和恢复 UIView.animateWithDuration
UIView.animateWithDuration 或 UIScrollView.animateWithDuration - 如何在当前状态暂停