iOS

[iOS] UIView & CALayer

thoonk: 2021. 6. 1. 22:45
반응형

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

반응형