弗拉基米尔,关于 CAAnimations 的问题是有道理的。但我找到了一种“暂停”的方法,所以我可以继续使用 UIView 动画:
CALayer *pLayer = [self.containerView.layer presentationLayer];
CGRect frameStop = pLayer.frame;
pausedX = frameStop.origin.x;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.01];
[UIView setAnimationCurve: UIViewAnimationCurveLinear];
// set view properties
frameStop.origin.x = pausedX;
self.containerView.frame = frameStop;
[UIView commitAnimations];
我在这里做的是使用presentationLayer 找出动画视图的当前x 值。之后,我执行一个覆盖原始动画的新动画。确保为此设置了 setAnimationBeginsFromCurrentstate:YES。这会取消原始动画并将动画视图放置到它的目标位置(它会自动执行),而是放在动画过程的当前位置。
希望这对其他人也有帮助!:)