iOS 기본 (swift)
[iOS - swift] View와 Layer의 차이 (UIView, CALayer)
jake-kim
2022. 5. 19. 23:03
View와 Layer
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
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를 사용한 테두리에 그라데이션 넣기
* 참고