일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- iot
- EventLoop
- uikit
- LifeCycle
- dgcharts
- Architecture
- embedded-swift
- flutter
- URLSession
- OpenAI
- philipshue
- designpattern
- builder
- WebSocket
- dart
- swift
- tuist
- GIT
- chartsorg
- weatherkit
- WWDC24
- AppleDeveloper
- SwiftUI
- isolate
- raspberrypi5
- 문법
- dartz
- Xcode
- SampleApp
- network
Archives
- Today
- Total
Jaebi의 Binary는 호남선
SwiftUI에 UIKit 넣기 본문
목차 Open
SwiftUI에 UIKit 넣기
SwiftUI는 struct
로 뷰를 표시하고 UIKit은 class
로 뷰를 표시
- 중간다리를
UIViewRepresentable
프로토콜과Coordinator
가 담당
UIView 관련 사용
UIViewRepresentable
채택typealias UIViewType
로 어떤UIViewType
인지 지정makeUIView
에UIViewType
을 리턴updateUIView
는 SwiftUI에서 뷰가 업데이트 될때 불리는 메소드로, 이곳에서delegate
와 같은 처리makeCoordinator
는 뷰의 변경사항을 SwiftUI 인터페이스에 전달하는데 사용- 뷰의 change가 앱의 다른 부분에 영향을 줄 경우 구현 (필수는 아님)
- 예시: SwiftUI에서
UIActivityIndicatorView
사용makeUIView
에UIActivityIndicatorView
을 리턴
struct MyUIKitUIActivityIndicatorView: UIViewRepresentable {
func makeUIView(context: Context) -> UIViewType {
UIActivityIndicatorView(style: .large)
}
func updateUIView(_ uiView: UIViewType, context: Context) {}
func makeCoordinator() -> Coordinator {}
typealias UIViewType = UIActivityIndicatorView
}
UIViewController 관련 사용
UIViewControllerRepresentable
채택typealias UIViewControllerType
로 어떤UIViewControllerType
인지 지정- 위에서 본
UIViewRepresentable
원리와 동일하게 사용 - 예시: SwiftUI에서
IViewControllerRepresentable
를 준수하는MyActivityView
사용
struct MySwiftUIViewController: UIViewControllerRepresentable {
var activityItems: [Any]
var applicationActivities: [UIActivity]? = nil
func makeUIViewController(context: Context) -> UIViewControllerType {
UIActivityViewController(activityItems: activityItems, applicationActivities: applicationActivities)
}
func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {}
func makeCoordinator() -> Coordinator {}
typealias UIViewControllerType = UIActivityViewController
}
'Swift' 카테고리의 다른 글
Swift - 문법 (Property Wrappers) (0) | 2024.06.12 |
---|---|
Swift - 문법 (Protocols and Extensions, Error Handling, Generics) (0) | 2024.06.12 |
Swift - 문법 (Object and Classes, Enumerations and Structures, Concurrency) (0) | 2024.06.12 |
Swift - 문법 (Values, Control Flow, Functions and Closures) (0) | 2024.06.11 |
Philips Hue 연동 프로젝트 (0) | 2024.06.08 |