UIView动画互动

时间:2012-03-14 13:33:50

标签: ios animation uiview uikit

我有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个)?

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

1 个答案:

答案 0 :(得分:3)

您可以尝试使用animateWithDuration:delay:options:animations:completion:并添加setAnimationBeginsFromCurrentState选项。