2017-10-09 45 views
0

如何在UIViewPropertyAnimator執行動畫過程時增加值?由於我已將運動對象設置爲運動,因此我想在屏幕上放下它的值時增加它的值,但我不確定如何將其與我的Animator鏈接。有什麼建議麼?這是我如何發起的如何在UIViewPropertyAnimator執行動畫過程時增加值?

let toTravel = CGFloat(blockSize * newInstance.distanceToTravel()) //checks how far it needs to go. 
let frame = CGRect(x: x, y: startY, width: width, height: height) 
super.init(frame: frame) 
backgroundColor = UIColor.clear 
addSubBlocksToView(grid: grid, blockSize: blockSize) 
animator = UIViewPropertyAnimator(duration: 10.0, curve: .linear) { [unowned self] in 
    self.center.y += toTravel // need to calculate CODE this it is a static right now 
} 

正如你所看到的,它需要10秒鐘來旅行我計算的距離。我想跟蹤它已經通過計數器行進的每個像素(30)。

回答

0

當您開始動畫時,請設置CADisplayLink。在動畫過程中,您可以檢查當前位置(假設它是線性動畫,您可以通過initialPosition + time/10 * distance輕鬆完成此操作)。一旦動畫完成,您可以使顯示鏈接無效。顯示鏈接爲您提供每幀的回調,您可以使用它來更新屏幕上的計數器。

或者,您可以考慮使用CADisplayLink來驅動整個動畫(並使用由您自己的代碼驅動的自定義動畫曲線。)