iOS

[iOS] CALayer란

devharrry 2020. 2. 23. 18:29

CALayer란

 

UIView에서 렌더링, 레이아웃, 애니메이션 등을 관리하는 Core Animation클래스인 CALayer가 있습니다. 

모든 UIVIew는 layer 프로퍼티를 가지고 있습니다. 

 

UIView는 레이아웃과 터치 이벤트 처리 등 많은 작업을 하게되는데 실제로 뷰 위에 컨텐츠나 애니메이션을 그리는 행위는 직접적으로 다루지 않고 UIKit이 Core Animation에 위임하게 되고, shadow, corner radius, border, 3D transform, masking contents, animation과 같은 작업들을 CALayer가 담당하게 됩니다.

 

사용

CALayer를 사용하기 위해서는 QuartzCore.framework가 추가되어있어야 합니다. 

 

특징

- CALayer에서 CA 즉, CoreAnimation의 일부.

- 뷰에는 하나의 레이어만 구성되어 있음. 대신 서브레이어는 여러개 소유할 수 있음.

- 뷰를 여러 개 쌓아서 표현하는 것 보다 레이어를 쌓아서 만드는게 퍼포먼스 측면 훨씬 가볍다. 

- 레이어는 뷰의 draw(_ rect:)로 그려진 뒤에 표시됨. 서브뷰는 이 레이어 위에 얹혀짐.

 

UIView와 비교

UIView는 탭, 핀치, 클릭에 대한 이벤트를 받을 수 있고, UIVIew에 관련된 작업은 CPU를 사용하여 메인스레드에서 작동됩니다.

반면 CALayer는 GPU에서 직접 그려지며 별도의 스레드에서 작동됩니다. 그렇기 때문에 더 많은 유연성이 필요한 작업일 경우에 CALayer를 사용하는 것이 좋습니다.

 

예제코드

 

참고 

https://developer.apple.com/documentation/quartzcore/calayer

 

CALayer - Core Animation | Apple Developer Documentation

Layers are often used to provide the backing store for views but can also be used without a view to display content. A layer’s main job is to manage the visual content that you provide but the layer itself has visual attributes that can be set, such as a b

developer.apple.com

 

'iOS' 카테고리의 다른 글

iOS 오픈소스 첫 배포  (1) 2020.03.01
[iOS]contentInset, contentOffset  (1) 2020.02.23
[iOS] 앱 패키지 내부 살펴보기  (0) 2020.02.22
Xcode 컴파일 최적화하여 빌드 속도 올리기  (1) 2020.01.19
[iOS] MVVM패턴이란  (3) 2020.01.05