UIView动画交互



我有一个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

最新更新