# 230828 활동학습 --- ### UIView.AnimationOptions 와 UIView.KeyframeAnimationOptions 의 차이점. - UIView.AnimationOptions는 블록 객체를 사용하여 뷰를 애니메이션하기 위한 옵션입니다, 그에 비해UIView.KeyframeAnimationOptions은 키프레임 기반 애니메이션 구성 옵션입니다. - UIView.AnimationOptions는 `static var overrideInheritedCurve: UIView.AnimationOptions`가 있습니다. - `static var overrideInheritedCurve: UIView.AnimationOptions`는 애니메이션이 제출될 때 지정된 원래 곡선 값을 사용하도록 애니메이션을 강제합니다. - UIView.KeyframeAnimationOptions는 `static var overrideInheritedOptions: UIView.KeyframeAnimationOptions`가 있습니다. - 애니메이션 유형이나 기타 옵션을 상속하지 않는 옵션입니다. - UIView.AnimationOptions는 `` --- ### UIView.AnimationOptions은 어떤 타입으로 정의되어 있는지, 준수하는 프로토콜은 어떤 프로토콜일까요? - [`AnimationOptions`](https://developer.apple.com/documentation/uikit/uiview/animationoptions)는 구조체입니다. - 준수하는 프로토콜 - [OptionSet](https://developer.apple.com/documentation/swift/optionset): bit 집합에 대한 수학적 집합 인터페이스를 제공하는 타입 - [RawRepresentable](https://developer.apple.com/documentation/swift/rawrepresentable): 연관된 원시 값으로(부터) 변환할 수 있는 타입 - [SetAlgebra](https://developer.apple.com/documentation/swift/setalgebra): 수학적 집합 연산을 제공하는 타입 - [Equatable](https://developer.apple.com/documentation/swift/equatable): 값 동등성을 비교할 수 있는 타입 - [ExpressibleByArrayLiteral](https://developer.apple.com/documentation/swift/expressiblebyarrayliteral): 배열 리터럴을 사용하여 초기화할 수 있는 타입 - [Sendable](https://developer.apple.com/documentation/swift/sendable): 복사를 통해 동시성 도메인 간에 값을 안전하게 전달할 수 있는 타입 --- ### UIView의 transform 프로퍼티란? - 뷰의 변형을 나타내는 속성 - 이 속성을 사용하여 뷰의 프레임 직사각형을 상위 뷰의 좌표 시스템 내에서 확대하거나 회전시킬 수 있습니다(기본값은 CGAffineTransformIdentity) - 변환은 뷰의 앵커 포인트를 기준으로 발생합니다. 기본적으로 앵커 포인트는 프레임 직사각형의 중심점과 같습니다.(앵커 포인트를 변경하려면 뷰의 기본 CALayer 객체의 anchorPoint 속성을 수정해야합니다.) - bounds의 center를 기준으로 지정 --- ### UIView의 transform 프로퍼티로 어떤 애니메이션 효과를 줄 수 있을까요? - 회전, 크기변경, 이동 또는 조합된 애니메이션 --- ### Timing Function의 종류에는 무엇이 있을까요? - `curveEaseInOut`: Property changes are slow at the ***beginning and at the end*** of the animation. - `curveEaseIn`: Property changes are slow at the ***beginning*** of the animation only. - `curveEaseOut`: Property changes are slow at the ***end*** of the animation only. - `curveLinear`: Property changes are equal during the whole animation.