2017-10-09 6 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을 사용하여 전체 애니메이션을 구동하고 자신의 코드로 구동되는 사용자 정의 애니메이션 커브를 사용할 수도 있습니다.