iOS-Children-Study / Growth-Study

성장로드맵 체크포인트 기반 스터디 레포입니다.
1 stars 0 forks source link

정영오_0621 #11

Open ghost opened 1 year ago

ghost commented 1 year ago

Graphics

CALayer 와 UIView 의 차이

CALayer 는 이미지 기반으로 콘텐츠를 관리하고, 해당 콘텐츠에 애니메이션을 적용할 수 있는 객체입니다. 대부분의 경우 UIView 를 위한 Backing Store 로 활용되지만 무조건 UIView 와 함께 사용해야 하는것은 아닙니다.

CALayer 은 주로 시각적 콘텐츠를 관리하는 역할을 합니다. 배경색, 테두리, 그림자 등을 설정하기 위해선 CALayer 를 사용해야합니다. 직접적인 시각적 콘텐츠 이외에도, 해당 콘텐츠를 화면에 표시하는데 사용되는 지오메트리 속성도 CALayer 가 관리합니다. 위치, 크기 및 해당 정보에 적용되는 변형에 대한 정보도 유지 관리합니다.

UIView 에서 CALayer 객체를 생성한 경우, 일반적으로 뷰는 자신을 CALayer 의 델리게이트로 자동 할당합니다. 꼭 필요한 경우가 아니라면 이 관계를 변경해서는 안됩니다. 직접 CALayer 객체를 생성하는 경우는 델리게이트 객체를 할당하는 과정이 필요합니다.

프레임워크 계층

CALayer 는 접두사에서 알 수 있지만, Core Animation 프레임워크 계층의 객체입니다. UIView 는 UIKit 프레임워크 계층의 객체입니다.

Animatable Property

Core Animation 프레임워크는 CALayer 의 일부 프로퍼티에 빌트인 애니메이션을 제공합니다. UIView.animate 블록 내부에서 특정 프로퍼티를 변경하는 코드를 실행했을 때, 별도로 애니메이션을 구현해주지 않아도 애니메이션이 일어나는 것은 빌트인 애니메이션 덕분입니다.

이렇게 빌트인 애니메이션이 제공되는 프로퍼티를 Animatable Property 라고 부릅니다. UIView 에도 frame, bounds, center, alpha 등의 Animatable Property 가 존재합니다만, CALayer 의 Animatable Property 를 사용하면 더 많은 종류의 빌트인 애니메이션을 활용할 수 있습니다.

Animatable Property 라고 착각하기 쉬운 프로퍼티의 예시로는 오토레이아웃의 Constraint 가 있습니다. ConstraintlayoutIfNeeded 메소드를 통해서 뷰의 frame 프로퍼티를 즉시 변경시키고, frameAnimatable Property 이기 때문에 빌트인 애니메이션이 동작하는 형태입니다.

CAAnimation 의 역할과 하위객체

CAAnimation 은 Core Animation 을 위한 추상 슈퍼클래스입니다. CAAnimation 은 CAMediaTiming 및 CAAction 프로토콜에 대한 기본 지원을 제공하는 역할을 하며, 실제로 애니메이션을 적용하려면 CAAnimation 의 서브클래스인 CABasicAnimation, CAKeyframeAnimation, CAAnimationGroup 또는 CATransition 인스턴스를 생성해야 합니다.

CABasicAnimation

CAKeyframeAnimation

CAAnimationGroup

CATransition