study record

[iOS] UIView의 Layer란? 본문

iOS/iOS 정리

[iOS] UIView의 Layer란?

asong 2022. 4. 1. 15:52

UIView에는 layer 프로퍼티가 있다.

layer는 CALayer의 객체이다. CALayer는 CoreAnimation Layer를 뜻한다.

 

 

 

UIView는 하나의 CALayer(Root)만 가지고 있다. CALayer(Root)는 SubLayer를 여러 개 둘 수 있다. UIView의 SubView는 UIView의 CALayer(Root) 위에 얹혀지는 것이다. 뷰를 여러 개 쌓아서 표현하는 것 보다 레이어를 쌓아서 만드는게 퍼포먼스 측면에서 훨씬 가볍다.

 

iOS 개발에서 보여지는 부분의 기본을 구성하는 UIView는 사실 그려지는 것이 UIView 자체가 아니라 내부 layer에 그려지는 것이다. 기본적으로 CALayer로 구성되어 있는 Layer는 그려지는 컨텐츠에 대한 캐시를 사용하며, 이는 bitmap backing store라고 불리며 최대한 효율적으로 관리한다. 즉, UIView에서 그려질 때 한 번 그려지고 나면 최대한 이 캐시를 사용하고 여러차례 비효율적으로 그리지 않는다. 

 

UIView는 많은 것을 처리하지만 그림(이미지)나 애니메이션들은 직접 제어하지 않고, UIView 안의 layer 객체에서 일을 직접 수행한다. backgroundColor 세팅이나 cornerRadius 같은 경우가 있다. view의 backgroundColor를 바꾸어도 결국엔 layer의 background가 바뀐다. 또한 View의 프로퍼티 접근만으로 할 수 없는 부분도 Layer를 통해서는 가능하다.

 

custonView.layer.cornerRadius = 10

 

Core Graphics -> Core Animation -> UIKIt, AppKit 순으로 발전했고 iOS 앱 개발시 해당 프래임워크들을 필요한 기능에 따라 선택적으로 사용할 수 있다. 저수준의 프래임워크일수록 많은 기능을 제공하지만 전체적인 코드량이 많다. 고수준의 프레임 워크일수록 저수준보다 유연성은 떨어지지만 사용이 간편하고 코드가 적다.

 

 

참고:

https://getbingsoo.tistory.com/21

https://woookdev.github.io/programming/iOS-View%EC%99%80-Layer-%EA%B4%80%EA%B3%84-%EC%A0%95%EB%A6%AC/

https://velog.io/@songtaehwan/iOS-Views-vs-Layers

https://babbab2.tistory.com/53

'iOS > iOS 정리' 카테고리의 다른 글

[iOS] iOS 레이아웃 사이클  (0) 2022.04.06
[iOS] invalidateIntrinsicContentSize()  (0) 2022.04.05
[iOS] UIResponder  (0) 2022.03.30
[iOS] NSCache란?  (0) 2022.03.26
iOS App 실행 과정  (0) 2022.03.25