2017-11-09 11 views
0

나는 UIViewPropertyAnimator의 문서를 망설 였고 두 UIViewPropertyAnimator를 결합하는 방법을 찾고 싶었습니다. 이 같은많은 UIViewPropertyAnimators를 결합하십시오

뭔가 :

let firstAnimator = UIViewPropertyAnimator(duration: 2, 
              dampingRatio: 0.4, 
              animations: animation1) 
let secondAnimator = UIViewPropertyAnimator(duration: 2, 
              dampingRatio: 0.4, 
              animations: animation2) 

firstAnimator.addAnimator(secondAnimator, withDelay: 1) 
firstAnimator.startAnimation() 

내가이도 존재 이런 UIViewPropertyAnimatorGroup 또는 뭔가를 놓친 거지?

답변

0

현재 권장되는 방법은 UIViewPropertyAnimator의 배열을 사용하는 것입니다.

이 접근법은 "UIKit을 사용한 고급 애니메이션"이라는 WWDC 2017 프리젠 테이션에 자세히 설명되어 있습니다. https://developer.apple.com/videos/play/wwdc2017/230/

필수 비트는 모든 애니메이터를 함께 유지하는 것이며, 제스처 기반 이벤트가 발생할 때마다 모든 애니메이터에게 한 번에 업데이트를 적용 할 수 있습니다. 여러 속성 애니메이터가 필요합니까 왜, 특정 질문에 대한 https://github.com/nathangitter/interactive-animations


:

var runningAnimators = [UIViewPropertyAnimator]() 

// later in the code... 

runningAnimators.forEach { $0.pauseAnimation() } // pause all animations 

나는이 방법으로 여러 속성 애니메이터를 사용하는 예제를 제공 GitHub의에 오픈 소스 REPO가? 일반적으로 타이밍 곡선이 여러 개인 단일 애니메이션을 원할 때는 여러 개의 애니메이터 만 필요하지만 타이밍 매개 변수가 동일한 것처럼 보입니다.

+0

애니메이션의 구성을 추상화하려고합니다. 1) 하나의 애니메이터가 완료된 후 다른 하나를 호출하고 완료 한 후 다른 하나를 호출 (그리고 이것을 애니메이터 레이어에서 작업하기 위해 추상화)합니다. 2) 하나의 애니메이터를 원한다면 하나를 시작합니다 (애니메이션을 지연 시간과 함께 추가 할 수 있지만 애니메이터와 같은 시간에 애니메이션이 완료되고 의미가 있음을 알고있는 경우) –

+0

직접 작성해야 할 수도 있습니다. Core Animation을 감싸는 대신에 래퍼. 달성하고자하는 특정 종류의 애니메이션이 있습니까? 특정 종류의 애니메이션을 추상화 할 수있는 훌륭한 라이브러리가 있습니다. 'UIViewPropertyAnimator'는 제스처 구동 및 인터럽트 가능해야하는 애니메이션에 가장 적합한 것으로 보입니다. – nathan

+0

@TiagoAlmeida이 해결책이 효과가 있습니까? – nathan