2012-03-14 182 views
0

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

或者第一次動畫必須首先完成並且只有在第二次動畫開始後才能完成的行爲?

回答

3

您可以嘗試使用animateWithDuration:delay:options:animations:completion:幷包括選項setAnimationBeginsFromCurrentState

+0

太棒了!謝謝! – Lloyd18 2012-03-14 13:56:05