如何在UIViewPropertyAnimator进行动画处理时增加值?

时间:2017-10-09 02:28:58

标签: swift uiviewpropertyanimator

如何在UIViewPropertyAnimator进行动画处理时增加值?由于我已经设置了我的对象,我想增加它在屏幕上的值,但我不知道如何将它与我的Animator相关联。有什么建议?以下是我发起

的方式
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)。

1 个答案:

答案 0 :(得分:0)

启动动画时设置CADisplayLink。在动画期间,您可以检查当前位置(假设它是线性动画,您可以通过initialPosition + time/10 * distance轻松完成此操作)。动画完成后,您可以使显示链接无效。显示链接为您提供每个帧的回调,您可以使用它来更新屏幕计数器。

或者,您可以考虑使用CADisplayLink来驱动整个动画(并使用由您自己的代码驱动的自定义动画曲线。)