我有一个UIView,它在长按手势时具有动画帧大小。
- (IBAction)longPressGesture:(id)sender {
NSTimeInterval duration = 1;
CGRect newFrame = self.view.frame;
switch (((UIGestureRecognizer *)sender).state) {
case UIGestureRecognizerStateBegan:
newFrame.size.height += 100;
break;
case UIGestureRecognizerStateEnded:
newFrame.size.height -= 100;
break;
default:
break;
}
[UIView animateWithDuration:duration animations:^{
self.view.frame = newFrame;
}];
}
在tap_begin帧高度增加到最大尺寸(高度+100)时,在tap_end减小到原始尺寸(高度-100)时。问题是,当我点击时,帧开始增长,然后在增长的同时释放手指,第二个动画从大帧开始,而不是从当前状态开始。
例如,帧开始从高度200到300设置动画,在动画中间(当帧高度为250时),我释放手指,帧高度立即设置为300并开始减小到200。
如何实现可以中断第一个动画并从当前高度(例如250)开始第二个动画的行为?
或者第一个动画必须在第一个动画开始时完成,并且仅在第二个动画开始后完成的行为?
您可以尝试使用animateWithDuration:delay:options:animations:completion:
并包含选项setAnimationBeginsFromCurrentState
。