https://developer.apple.com/documentation/uikit/uiviewpropertyanimator
"A class that animates changes to views and allows the dynamic modification of those animations."
뷰의 애니메이션 움직임을 갖도록 하고 이와 같은 애니메이션의 동적 수정을 가능하게 하는 클래스입니다.
@MainActor class UIViewPropertyAnimator : NSObject
UIViewPropertyAnimator
객체는 뷰를 애니메이션으로 변화시키도록 하고, 애니메이션이 완료되기 전까지 동적으로 애니메이션을 수정할 수 있도록 합니다. 속성 애니메이터를 통해 정상적으로 애니메이션의 시작과 끝을 동작하도록 할 수 있으며, 상호작용하는 애니메이션 형태로 변경시킬 수도 있습니다. 이 과정에 대한 타이밍도 제어할 수 있습니다. 애니메이터는 블락에서 제공된 필요한 애니메이션을 생성해, 애니메이션이 가능한 프레임, 센터, 알파, 속성 변형과 같은 뷰의 속성을 동작하도록 합니다.
속성 애니메이터 객체를 생성할 때, 아래 사항을 구체화해야 합니다.
애니메이션 블락에서 뷰에 반영되기를 원하는 마지막 값을 애니메이션 가능한 속성의 값에 설정할 수 있습니다. 예를 들어 만약 뷰를 페이드 아웃하길 원한다면, 알파 속성을 0으로 둡니다. 속성 애니메이터 객체는 속성의 초기값으로부터 블락에서 구체화한 새로운 값으로 적용하는 애니메이션을 생성합니다.
속성 변화 속도는 속성 애니메이터 생성 시 구체화한 타이밍 커브로 제어됩니다. 속성 애니메이터는 UIKit
애니메이션 커브에 내장된 선형, ease-in, ease-out과 같은 것을 포함합니다. 애니메이션의 타이밍을 제어하기 위해 큐빅 베지어 커브 혹은 스프링 함수를 사용할 수도 있습니다.
표준 초기화 메소드 중 한 가지를 사용하는 것을 통해 애니메이터를 생성하길 원한다면, startAnimation()
메소드를 호출하는 것을 통해 명시적으로 애니메이션을 시작해야 합니다. 애니메이터 생성 이후 즉시 애니메이션을 시작하길 원한다면, 표준 초기화 대신 runningPropertyAnimator(withDuration:delay:options:animations:completion:)
를 사용하면 됩니다.
이 클래스는 애니메이션의 시작, 정지, 수정에 관한 메소드를 결정하는 UIViewAnimating
과 UIViewImplicitlyAnimating
프로토콜을 채택하고 있습니다. 이에 대한 더 많은 정보가 필요하다면 아래 링크를 살펴보시기 바랍니다.
UIViewAnimating
https://developer.apple.com/documentation/uikit/uiviewanimating
https://velog.io/@panther222128/UIViewAnimating
UIViewImplicitlyAnimating
https://developer.apple.com/documentation/uikit/uiviewimplicitlyanimating
https://velog.io/@panther222128/UIViewImplicitlyAnimating
속성 애니메이터는 애니메이션의 타이밍과 수행을 제어하기 위한 코드 작성을 지원합니다.
UIViewAnimating
https://developer.apple.com/documentation/uikit/uiviewanimating
https://velog.io/@panther222128/UIViewAnimating
addAnimations(:)
와 addAnimations(
:delayFactor:)
를 사용해 원래 애니메이션 이후 애니메이션 블락을 추가할 수 있습니다.
fractionComplete
속성을 수정함으로써 일시정지된 애니메이션을 통해 Scrub할 수 있습니다.
isReversed
속성을 사용해 애니메이션의 방향을 바꿀 수 있습니다.
애니메이션을 일시정지하고 마무리를 위한 continueAnimation(withTimingParameters:durationFactor:)
메소드를 사용함으로써 부분적으로 완료해 애니메이션의 타이밍과 듀레이션을 수정할 수 있습니다.
대부분의 기본적인 움직임은 이 클래스가 채택하고 있는 UIViewAnimating
프로토콜의 속성을 통해 제어됩니다. 이와 같은 메소드와 속성을 사용해서 애니메이션을 시작, 일시정지, 재개, 정지할 수 있습니다. 애니메이션을 통해 스크럽하는 것도 사용할 수 있고 방향을 바꿀 수도 있습니다. 애니메이션 블락의 수정과 타이밍 정보를 업데이트해서 이 클래스의 메소드와 속성을 사용할 수 있습니다.