UIViewPropertyAnimator

Panther·2021년 5월 5일
0

https://developer.apple.com/documentation/uikit/uiviewpropertyanimator

"A class that animates changes to views and allows the dynamic modification of those animations."

뷰의 애니메이션 움직임을 갖도록 하고 이와 같은 애니메이션의 동적 수정을 가능하게 하는 클래스입니다.

Declaration

@MainActor class UIViewPropertyAnimator : NSObject

Overview

UIViewPropertyAnimator 객체는 뷰를 애니메이션으로 변화시키도록 하고, 애니메이션이 완료되기 전까지 동적으로 애니메이션을 수정할 수 있도록 합니다. 속성 애니메이터를 통해 정상적으로 애니메이션의 시작과 끝을 동작하도록 할 수 있으며, 상호작용하는 애니메이션 형태로 변경시킬 수도 있습니다. 이 과정에 대한 타이밍도 제어할 수 있습니다. 애니메이터는 블락에서 제공된 필요한 애니메이션을 생성해, 애니메이션이 가능한 프레임, 센터, 알파, 속성 변형과 같은 뷰의 속성을 동작하도록 합니다.

속성 애니메이터 객체를 생성할 때, 아래 사항을 구체화해야 합니다.

  • 하나 이상의 뷰 속성을 수정하는 코드를 포함하는 블록이 필요합니다.
  • 애니메이션 동작 과정에서 속도를 결정하는 타이밍 커브가 필요합니다.
  • 애니메이션의 듀레이션(초단위)이 필요합니다.
  • 애니메이션이 끝날 때 수행하는 선택적인 컴플리션 블록이 필요합니다.

애니메이션 블락에서 뷰에 반영되기를 원하는 마지막 값을 애니메이션 가능한 속성의 값에 설정할 수 있습니다. 예를 들어 만약 뷰를 페이드 아웃하길 원한다면, 알파 속성을 0으로 둡니다. 속성 애니메이터 객체는 속성의 초기값으로부터 블락에서 구체화한 새로운 값으로 적용하는 애니메이션을 생성합니다.

속성 변화 속도는 속성 애니메이터 생성 시 구체화한 타이밍 커브로 제어됩니다. 속성 애니메이터는 UIKit 애니메이션 커브에 내장된 선형, ease-in, ease-out과 같은 것을 포함합니다. 애니메이션의 타이밍을 제어하기 위해 큐빅 베지어 커브 혹은 스프링 함수를 사용할 수도 있습니다.

표준 초기화 메소드 중 한 가지를 사용하는 것을 통해 애니메이터를 생성하길 원한다면, startAnimation() 메소드를 호출하는 것을 통해 명시적으로 애니메이션을 시작해야 합니다. 애니메이터 생성 이후 즉시 애니메이션을 시작하길 원한다면, 표준 초기화 대신 runningPropertyAnimator(withDuration:delay:options:animations:completion:)를 사용하면 됩니다.

이 클래스는 애니메이션의 시작, 정지, 수정에 관한 메소드를 결정하는 UIViewAnimatingUIViewImplicitlyAnimating 프로토콜을 채택하고 있습니다. 이에 대한 더 많은 정보가 필요하다면 아래 링크를 살펴보시기 바랍니다.

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

Modifying Animations Dynamically

속성 애니메이터는 애니메이션의 타이밍과 수행을 제어하기 위한 코드 작성을 지원합니다.

  • 시작, 일시정지, 재개, 정지 애니메이션, 아래 링크를 참고하시면 메소드를 볼 수 있습니다.

UIViewAnimating
https://developer.apple.com/documentation/uikit/uiviewanimating
https://velog.io/@panther222128/UIViewAnimating

  • addAnimations(:)addAnimations(:delayFactor:)를 사용해 원래 애니메이션 이후 애니메이션 블락을 추가할 수 있습니다.

  • fractionComplete 속성을 수정함으로써 일시정지된 애니메이션을 통해 Scrub할 수 있습니다.

  • isReversed 속성을 사용해 애니메이션의 방향을 바꿀 수 있습니다.

  • 애니메이션을 일시정지하고 마무리를 위한 continueAnimation(withTimingParameters:durationFactor:) 메소드를 사용함으로써 부분적으로 완료해 애니메이션의 타이밍과 듀레이션을 수정할 수 있습니다.

대부분의 기본적인 움직임은 이 클래스가 채택하고 있는 UIViewAnimating 프로토콜의 속성을 통해 제어됩니다. 이와 같은 메소드와 속성을 사용해서 애니메이션을 시작, 일시정지, 재개, 정지할 수 있습니다. 애니메이션을 통해 스크럽하는 것도 사용할 수 있고 방향을 바꿀 수도 있습니다. 애니메이션 블락의 수정과 타이밍 정보를 업데이트해서 이 클래스의 메소드와 속성을 사용할 수 있습니다.

0개의 댓글