[iOS] UIView & CALayer
UIView와 CALayer에 관한 내용을 기록합니다.
UIView
화면에서 직사각형 영역에 대한 content를 관리하는 객체이다.
class UIView: UIResponder
UIView 객체는 직사각형 영역 내 content를 만들고 content와의 상호작용을 처리한다.
앱이 사용자와 상호작용하는 주된 방식이므로 다음과 같은 여러 가지 역할이 있다.
Drawing and animation
- UIkit 또는 Core Graphics를 사용해서 직사각형 영역에 content를 그린다.
- 일부 프로퍼티를 애니메이션화할 수 있다.
Layout and subview management
- 0 또는 그 이상의 subview를 갖고 있다.
- subview의 위치와 크기를 조정할 수 있다.
- 뷰의 우선순위에 따라 크기와 위치를 재조정할 수 있는 Auto Layout을 사용한다.
Event handling
- UIResponder의 하위 클래스이며 터치와 다른 타입의 이벤트에 응답한다.
- 제스처를 인식하여 처리할 수 있게 한다.
뷰는 다른 뷰 내부에 중첩되어 뷰 계층을 만들 수 있다. 이 계층은 관련 content를 편리하게 구성할 수 있다.
뷰를 중첩하면 하위 뷰(subview)와 상위 뷰(superview)간에 parent-child 관계가 생성된다.
superview는 여러 개의 subview를 포함할 수 있지만 각 subview는 하나의 superview만 가질 수 있다.
Threading Considerations
사용자 인터페이스에 대한 조작은 main thread에서 해야한다.
- UIView의 메서드는 항상 main thread에서 호출해야 한다.
- 뷰 객체를 생성할 때를 제외하고 main thread에서 조작해야 한다.
CALayer
이미지 기반 content를 관리하고 해당 content에서 애니메이션을 수행하는 객체이다.
UIView에서 사용되는 Core Animation Layer이며 UIView는 layer 프로퍼티를 통해 관리한다.
class CALayer : NSObject
background color, border, and shadow, corner 등을 설정할 수 있다.
position, size, transform과 같은 geometry에 관한 정보도 있다.
layer는 subview처럼 sublayer를 가질 수 있고 이를 통해 더 시각적인 표현을 할 수 있다.
또한, layer는 view에 비해 가벼워서 더 나은 퍼포먼스를 기대할 수 있다.
layer 프로퍼티를 변경하면서 설정한 시간에 따라 애니메이션을 설정할 수 있다.
부족한 점 피드백해주시면 감사합니다!
참고:
https://developer.apple.com/documentation/uikit/uiview
https://developer.apple.com/documentation/quartzcore/calayer