Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 리펙토링
- collectionview
- HIG
- Protocol
- rxswift
- uitableview
- 스위프트
- Human interface guide
- SWIFT
- uiscrollview
- 리펙터링
- ribs
- Observable
- UICollectionView
- tableView
- Xcode
- Refactoring
- 클린 코드
- UITextView
- RxCocoa
- 리팩토링
- swift documentation
- clean architecture
- map
- swiftUI
- ios
- Clean Code
- MVVM
- combine
- 애니메이션
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] View와 Layer의 차이 (UIView, CALayer) 본문
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를 사용한 테두리에 그라데이션 넣기
* 참고
'iOS 기본 (swift)' 카테고리의 다른 글
Comments