【问题标题】:UIView animation interactionUIView 动画交互
【发布时间】:2012-03-14 13:33:49
【问题描述】:

我在长按手势上有动画帧大小的 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 帧高度增加到最大尺寸(heigh + 100),在 tap_end 减小到原始尺寸(heigh - 100)。问题是当我点击时,帧开始增长,然后在增长时我松开手指,第二个动画从大帧开始,而不是从当前状态开始。

例如,帧从高度 200 开始动画到 300,在动画中间(当帧高度为 250 时)我松开手指,帧高度立即设置为 300 并开始减小到 200。

如何实现可以中断第一个动画并从当前高度(例如 250)开始第二个动画的行为?

或者第一个动画必须首先完成并且只有在第二个动画开始之后才能完成的行为?

【问题讨论】:

    标签: ios animation uiview uikit


    【解决方案1】:

    您可以尝试使用animateWithDuration:delay:options:animations:completion: 并包含选项setAnimationBeginsFromCurrentState

    【讨论】: