관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] View와 Layer의 차이 (UIView, CALayer) 본문

iOS 기본 (swift)

[iOS - swift] View와 Layer의 차이 (UIView, CALayer)

jake-kim 2022. 5. 19. 23:03

View와 Layer

UIView의 layer에 접근하여 shadow, border, cornerRadius적용한 경우

private let someView: UIView = {
  let view = UIView()
  view.backgroundColor = .systemBlue
  
  view.layer.shadowOffset = CGSize(width: 0, height: 10)
  view.layer.shadowColor = UIColor.black.cgColor
  view.layer.shadowOpacity = 0.3
  
  view.layer.cornerRadius = 60
  view.layer.borderWidth = 3
  view.layer.borderColor = UIColor.green.cgColor
  view.translatesAutoresizingMaskIntoConstraints = false
  return view
}()

View와 layer가 생겨난 배경

  • 참고) view는 UIKit 중 하나이고, layer는 Core Animation중 하나
  • 그래픽을 그릴려면 그래픽 하드웨어 (GPU)에 접근하여 직접 그리면(OpenGL) 가장 렌더링 속도가 빠르지만 코드의 양이 많은 단점 존재 
  • 코드의 양이 거대해지므로 애플은 이보다 고수준 프레임워크인 Core Animation과 UIKit 프레임워크를 만듦
  • UIKit은 Core Animation보다 한 단계 높은 수준의 API

https://www.appcoda.com/calayer-introduction/

UIView와 layer 비교

  UIView layer
위치 UIKit에서 제공 Core Animation에서 제공
스레드 메인 스레드 UIKit과는 다른 별도의 스레드 사용
UIResponder UIResponder의 서브클래스이므로 tap, touch 등의 gesture 인식 UIResponder가 없기 때문에 tap, touch 인식 x
기능 CALayer를 wrapping하고 있는 상태 복잡한 애니메이션과 퍼포먼스 측면에서 UIView보다 우수
범용성 UIKit은 모바일에서만 동작
cf) AppKit은 Mac에서만 동작
모바일, Mac 모두 동일하게 동작

* cf) CALayer를 이용한 다양한 UI 포스팅 글

- CAGradientLayer, CAShapeLayer를 사용한 테두리에 그라데이션 넣기

- Timer UI 구현

- 뷰의 그라데이션 테두리 loop 애니메이션

 

* 참고

https://www.appcoda.com/calayer-introduction/

Comments