2013-06-11 103 views

回答

1

問題可能是您的動畫計時,而不是暫停。默認情況下,動畫使用容易,減少時間。這意味着每個動畫從0開始,加速到全速,然後減速到停止。然後下一個動畫做同樣的事情。

如果您想要鏈接一系列動畫以創建無縫效果,則可能需要使用線性動畫時序。查看UIView類方法animateWithDuration:delay:options:animations:completion:

傳遞UIViewAnimationOptionCurveLinear作爲options參數。

+0

將選項設置爲UIViewAnimationOptionCurveLinear確實改善了動畫效果,但動畫之間仍然存在輕微的停頓。我認爲這是因爲動畫不是在單個動畫塊中運行,但我不確定。 – JeffRegan

1

這是迅速,懶得轉換爲目標C.在動畫事務塊中鏈接動畫。

UIView.animateKeyframesWithDuration(totalAnimationDuration, delay: 0, options:UIViewKeyframeAnimationOptions.CalculationModeLinear, animations: { 

      for (var i = 0; i < wayPoints.count; i++) { 
       let nextWayPoint = wayPoints[i] 

       UIView.addKeyframeWithRelativeStartTime(CGFloat(i) * relativeDuration, relativeDuration: relativeDuration, animations: { 
        token.frame = CGRect(x: nextWayPoint.x + self.inset, y: nextWayPoint.y + self.inset, width: token.frame.size.width, height: token.frame.size.height) 
        }) 


      } 


      }, completion: { success in 


      }) 
+0

這並不回答我的問題,也不是問題所提及的語言。 – JeffRegan

+0

公平地說,你沒有指定objective-c,它確實回答你的問題。 –

+0

@JeffCompton,它使用上面顯示的完全相同的API調用轉換爲Obj-C。他是正確的,指出你必須使用類似關鍵幀動畫的方式將動畫連鎖成一次犯規。正如你在上面看到的,他動態地創建動畫並一次添加它們。這會將動畫鏈接到單個關鍵幀動畫。這樣可以避免您遇到的延遲,因爲會延遲等待來自CATransation提交的完成回調。 – TheCodingArt