반응형
Hacking with Swift 사이트의 강좌 번역본입니다.
[원문 : https://www.hackingwithswift.com/quick-start/swiftui/how-to-wrap-a-custom-uiview-for-swiftui]
How to wrap a custom UIView for SwiftUI
비록 SwiftUI가 UIKit의 UIView 하위클래스를 많이 제공하지만, 아직은 모두 제공하지는 않습니다. 다행히도, 원하는 UIView에 대한 사용자정의 wrappers를 만드는 것이 어렵지 않습니다.
예제로, UITextView에 대한 간단한 SwiftUI wrapper를 만들어봅시다. 여기에 4 단계가 있습니다.
- UIViewRepresentable를 준수하는 구조체를 만들기
- 작업중인 텍스트 문자열을 저장하는 프로퍼티 하나 정의하기
- 텍스트 뷰를 반환할 makeUIView() 메소드 제공하기
- 텍스트 뷰의 데이터가 변경될때마다 호출될 updatedUIView() 메소드 추가하기
코드에서 다음과 같이 마무리합니다.
struct TextView: UIViewRepresentable {
@Binding var text: String
func makeUIView(context: Context) -> UITextView {
return UITextView()
}
func updateUIView(_ uiView: UITextView, context: Context) {
uiView.text = text
}
}
그게 다입니다! 이제 다음과 같이, SwiftUI 뷰에서 TextView 컴포넌트를 즉시 사용할 수 있습니다.
struct ContentView : View {
@State var text = ""
var body: some View {
TextView(text: $text)
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
}
}
반응형
'SwiftUI > Composing views' 카테고리의 다른 글
How to create custom modifiers (0) | 2019.12.02 |
---|---|
How to store views as properties (0) | 2019.12.02 |
How to combine text views together (0) | 2019.12.02 |
How to create and compose custom views (0) | 2019.12.02 |