반응형

[최종 수정일 : 2018.03.29]

원문 : https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004514-CH1-SW1

코어 에니메이션에 관해서(About Core Animation)

Core Animation은 iOS와 OSX에서 사용가능한 그래픽 랜더링(rendering)이고 에니메이션 인프라(infrastructure)이며, 앱의 뷰와 시각적인 요소에 에니메이션을 적용하는데 사용됩니다. Core Animation으로 에니메이션의 각 프레임을 그리는데 필요한 대부분의 작업을 수행합니다. 여러분이 해야 하는 일은 (시작과 끝나는 시점 처럼) 몇가지 에니메이션 매개변수를 지정하고 Core Animation에게 시작하도록 하는 것입니다. Core Animation이 나머지를 처리 하며, 랜더링을 가속 하기위해 실제 그리는 작업을 내장된 그래픽 하드웨어로 전달합니다. 
이러한 자동 그래픽 가속은 CPU에 부담을 주고 앱의 속도를 저하시키지 않고 높은 프레임 속도와 부드러운 에니메이션을 만듭니다.

iOS 앱을 만드는 경우, 여러분이 Core Animation을 알든 모르든지간에 사용됩니다. 그리고 OS X 앱을 만드는 경우에, 매우 적은 노력으로 Core Animation을 사용할 수 있습니다. Core Animation은 AppKit과 UIKit 아래에 있으며, Cocoa 와 Cocoa Touth의 뷰의 구조(View workflow)에 완전히 통합되어 있습니다. 물론, Core Animation에는 앱의 뷰에 보여지는 기능을 확장하고 앱의 에니메이션을 보다 세밀하게(fine-grained) 제어할 수 있는 인터페이스를 가지고 있습니다.


요약(At a Glance)

Core Animation을 직접 사용할 필요는 없지만, Core Animation이 앱의 인프라의 일부로 동작하는 것을 이해하고 있어야 합니다.

코어 에니메이션으로 앱의 콘텐츠 관리(Core Animation Manages Your App’s Content)

Core Animation은 그리는 시스템 자체가 아닙니다. 하드웨어에서 앱의 콘텐츠를 조합하고 조작하기 위한 인프라(기반 구조: infrastructure)입니다. 이러한 인프라의 핵심으로는 콘텐츠를 관리하고 조작(manipulate)하기 위해 사용하는 레이어 객체(layer object)가 있습니다. 하나의 layer는 콘텐츠를 그래픽 하드웨어에 의해 쉽게 조작할수 있는 비트맵으로 캡쳐합니다. 대부분의 앱에서, layer는 뷰의 콘텐츠를 관리하는데 사용되지만 필요에 따라 독립적인 layer를 만들수도 있습니다.

관련 챕터 : 코어 에니메이션 기초(Core Animation Basics)레이어 객체 설정(Setting Up Layer Objects)

레이어를 수정하는 에니메이션(Layer Modifications Trigger Animations)

Core Animation을 사용하여 만드는 대부분의 에니메이션은 layer의 프로퍼티를 수정이 포함되어 있습니다. 뷰(view) 처럼, layer객체는 수정할 수 있는 사각형 경계(bounds), 화면상의 위치(position), 불투명도(opacity), 변형(transform), 많은 다른 시각적인 프로퍼티들을 가지고 있습니다. 이러한 프로퍼티 대부분의 경우, 프로퍼티의 값을 변경하면 암시적으로 layer가 이전 값에서 새 값으로 움직이는 에니메이션이 만들어 집니다. 또한, 에니메이션의 동작을 더 세부적으로 제어하려는 경우에 명시적으로 프로퍼티를 에니메이션화 할 수 있습니다.

관련 챕터 : 레이어 콘텐츠 에니메이션하기(Animating Layer Content)고급 에니메이션 방법(Advanced Animation Tricks)레이어 스타일 프로퍼티 에니메이션(Layer Style Propery Animations)에니메이션 가능한 프로퍼티(Animatable Properties)

레이어를 계층구조로 구성 가능(Layers Can Be Organized into Hierachies)

layers는 부모-자식 관계를 만들기 위해 계층구조로 배열할 수 있습니다. layers의 배열은 뷰와 유사한 방식으로 관리되어 시각적인 콘텐츠에 영향을 줍니다. layers 집합의 계층구조는 해당 뷰 계층구조와 미러링되어 첨부됩니다. 또한, 시야를 벗어나서 앱의 시각적인 콘텐츠를 확장하기 위해 layer 게층구조안에 독립적인 layers를 추가할 수 있습니다.

관련 챕터 : 레이어 계층구조 만들기(Building a Layer Hierarchy)

레이어의 기본동작을 변경하는 작업(Actions Let You Change a Layer’s Default Behavior)

암시적인 layer 에니메이션은 미리 정의된 인터페이스를 구현하는 일반 객체인 액션 객체(action objects)들로 이루어져 있습니다. Core Animation은 일반적인 layer와 연관된 에니메이션의 기본 설정을 위해 액션 객체들을 사용합니다. 사용자정의 에니메이션을 구현하거나 다른 타입의 동작을 구현하는데 사용하기 위해, 자신만의 액션 객체들을 만들수 있습니다. 그런 다음 layer의 프로퍼티 중 하나에 액션 객체를 할당합니다. 그 프로퍼티가 변경될때, Core Animation은 액션 객체를 가져와서 수행하도록 합니다.

관련 챕터 : 레이어의 기본 동작 변경하기(Changing a Layer’s Default Behavior)

이 문서의 사용방법(How to Use This Document)

이 문서는 앱의 에니메이션을 잘 제어 해야할 필요가 있거나 Layer를 사용해서 앱의 드로잉 성능을 향상시키고자 하는 개발자들을 대상으로 합니다. 또한, 이 문서는 iOS와 OS X에 대한 layer와 view간의 통합에 관한 정보를 제공합니다. layer와 view간의 통합은 iOS와 OS X에서 다르고 효과적인 에니메이션을 만들기 위해 이러한 차이점을 이해하는 것이 중요합니다.

전제 조건(Prerequisites)

여러분이 대상으로 하는 플랫폼의 뷰 아키텍쳐에 대해 이해하고 있어야 하고 뷰 기반(view-based)의 에니메이션을 만드는 방법에 익숙해져야 합니다. 그렇지 않은 경우, 다음에 오는 문서중 하나를 읽으세요.

참고사항(See Also)

Core Animation을 사용하여 특정 타입의 에니메이션을 구현하는 예제는 Core Animation cookbook을 보세요.

반응형
Posted by 까칠코더
,