## UIView Aniamtions #### 01. UIView.AnimationOptions 와 UIView.KeyframeAnimationOptions 의 차이점을 알아보고, UIView.AnimationOptions은 어떤 타입으로 정의되어 있는지, 준수하는 프로토콜은 어떤 프로토콜인지 알아봅시다 1️⃣ **UIView.AnimationOptions** - 단일 애니메이션 옵션을 나타내는 열거형 2️⃣ **UIView.KeyframeAnimationOptions** - 키프레임 애니메이션을 설정할 때 사용되는 열거형 - key frame 애니메이션은 여러 값을 설정하고 지정한 시간 동안 값 사이에 애니메이션을 제공할 수 있는 기능 -> 애니메이션의 중간상태를 key frame으로 정의 - 여러 개의 키프레임을 사용할 수 있기 때문에 보다 복잡한 동작을 만들 수 있음 #### 02. UIView의 [transform](https://developer.apple.com/documentation/uikit/uiview/1622459-transform) 프로퍼티에 대해 알아보고, 해당 프로퍼티로 어떤 애니메이션 효과를 줄 수 있는지 알아봅시다 - Rotate : 객체 회전 - Scale : 객체 크기 조정 - Translate : 객체 변환 - Skew : 객체 기울이기 #### 03. 애니메이션에서 자주 사용하는 [Timing Function](https://developer.apple.com/documentation/realitykit/animationtimingfunction)의 종류에는 무엇이 있는지 알아봅시다 - 애니메이션의 간격 동안 속성 값의 변화 속도를 제어하는 데 사용 - `Ease-In (가속)`: 이 함수는 애니메이션이 시작할 때 느리게 시작하고, 시간이 흐를수록 가속하는 형태를 가짐. 오브젝트가 처음에 움직이기를 더 어렵게 만들며, 점차적으로 빨라짐. - `Ease-Out (감속)`: 이 함수는 애니메이션이 빠르게 시작하고, 시간이 흐를수록 감속하는 형태를 가짐. 오브젝트가 처음에 움직이기를 쉽게 만들며, 점차 느려짐 - `Ease-In-Out (가속-감속)`: 이 함수는 애니메이션이 시작할 때 느리게 시작하고, 중간에는 가속하고, 다시 끝날 때 느리게 끝나는 형태를 가짐. 이것은 일반적으로 부드럽고 자연스러운 애니메이션 효과를 만들 때 사용됨. - `Linear (선형)`: 이 함수는 애니메이션 동안 일정한 속도로 움직임. 시간과 상관없이 속성 값이 일정하게 변함. - `Spring (스프링)`: 이 함수는 스프링처럼 튕기는 효과를 가지며, 애니메이션을 부드럽게 시작하고 끝냄. - `Custom (사용자 정의)`: 사용자가 직접 정의한 타이밍 함수도 사용할 수 있음. 이 때, 원하는 속도 곡선을 정확하게 제어할 수 있음. #### 04. 아래 예시 애니메이션 두 가지를 구현해봅니다 ```swift ```