---
# System prepended metadata

title: UIView Animations 활동학습
tags: [활동학습]

---

# 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.

