我將幾個動畫鏈接在一起,無法在連續動畫之間移除暫停。首先,我嘗試在完成塊中嵌套UIView動畫。從那時起,我已經搬到了此解決方案:移除UIView動畫之間的暫停
http://xibxor.com/objective-c/uiview-animation-without-nested-hell/
我認爲這是更具可讀性,但我也有同樣的問題暫停。
我將幾個動畫鏈接在一起,無法在連續動畫之間移除暫停。首先,我嘗試在完成塊中嵌套UIView動畫。從那時起,我已經搬到了此解決方案:移除UIView動畫之間的暫停
http://xibxor.com/objective-c/uiview-animation-without-nested-hell/
我認爲這是更具可讀性,但我也有同樣的問題暫停。
問題可能是您的動畫計時,而不是暫停。默認情況下,動畫使用容易,減少時間。這意味着每個動畫從0開始,加速到全速,然後減速到停止。然後下一個動畫做同樣的事情。
如果您想要鏈接一系列動畫以創建無縫效果,則可能需要使用線性動畫時序。查看UIView類方法animateWithDuration:delay:options:animations:completion:
傳遞UIViewAnimationOptionCurveLinear作爲options參數。
這是迅速,懶得轉換爲目標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
})
這並不回答我的問題,也不是問題所提及的語言。 – JeffRegan
公平地說,你沒有指定objective-c,它確實回答你的問題。 –
@JeffCompton,它使用上面顯示的完全相同的API調用轉換爲Obj-C。他是正確的,指出你必須使用類似關鍵幀動畫的方式將動畫連鎖成一次犯規。正如你在上面看到的,他動態地創建動畫並一次添加它們。這會將動畫鏈接到單個關鍵幀動畫。這樣可以避免您遇到的延遲,因爲會延遲等待來自CATransation提交的完成回調。 – TheCodingArt
將選項設置爲UIViewAnimationOptionCurveLinear確實改善了動畫效果,但動畫之間仍然存在輕微的停頓。我認爲這是因爲動畫不是在單個動畫塊中運行,但我不確定。 – JeffRegan