SwiftUI랑 UIKit 을 동시에 사용해서 호스팅하는 것을 공부했다.
이번 프로젝트를 하면서 애니메이션이나 디자인 적으로 UIKit으로는 구현하기 어려운 부분을 SwiftUI로 구현했는데
너무 큰 매력을 느껴서 앞으로 공부해보려고 한다 ! (TMI...)
UIHostingController
: SwiftUI 뷰 계층을 관리하는 UIKit 뷰 컨트롤러
https://developer.apple.com/documentation/swiftui/uihostingcontroller
UIHostingController | Apple Developer Documentation
A UIKit view controller that manages a SwiftUI view hierarchy.
developer.apple.com
import SwiftUI
struct PageControlButton: View {
//PageControlButton SwiftUI로 구현
}
var pageControlButton: UIHostingController<PageControlButton>!
override func viewDidLoad() {
super.viewDidLoad()
setupPVC()
setupPageControlButton()
}
func setupPageControlButton() {
let pageControlButtonView = PageControlButton(onIndexChanged: { [weak self] index in
self?.navigateToPage(index: index)
})
pageControlButton = UIHostingController(rootView: pageControlButtonView)
addChild(pageControlButton)
view.addSubview(pageControlButton.view)
pageControlButton.didMove(toParent: self)
pageControlButton.view.backgroundColor = .clear
pageControlButton.view.snp.makeConstraints {
$0.leading.trailing.equalToSuperview().inset(90)
$0.bottom.equalTo(view.safeAreaLayoutGuide).inset(15)
$0.height.equalTo(70)
}
}
이 페이지 컨트롤러 버튼을 ViewController들을 전환하는데 사용해서 onIndexChanged같은 것들이 있는데,
형식은 그냥 UIHostingController를 사용하여 SwiftUI 뷰인 PageControlButton을 UIKit 뷰 계층에 포함시켜주는 방식
즉, UIHostingController는 SwiftUI 뷰를 UIKit 뷰 계층에 통합할 수 있도록 도와주는 컨테이너이다.
'개인공부' 카테고리의 다른 글
WanderBoard _ 최종프로젝트 회고 (1) | 2024.07.12 |
---|---|
SwiftUI (0) | 2024.07.07 |
이미지 캐싱 _ Kingfisher (0) | 2024.07.06 |
CAGradientLayer _ 화면에 그라데이션 넣기 (0) | 2024.07.06 |
😯 (0) | 2024.05.19 |