SwiftUI的聲明式布局是真的炫酷
猛蔽。不過真正運用到項目中還需要點時間。
不過我們可以通過SwiftUI中提供的UIViewControllerRepresentable
協(xié)議 讓你的UIKit中的VC顯示在XCode11的Preview中黔漂, 如下圖。
image
ok 我們直接開始說說如何實現(xiàn)(共三步):
-
1禀酱、我們先暫定我們的UIKit的VC叫
UIKitViewController
,先做一點最簡單的UI布局
image
-
2. 創(chuàng)建一個中轉結構體UIVCPresenter 遵循并實現(xiàn)UIViewControllerRepresentable 協(xié)議 這個結構體可以當做UIKit和SwiftUI的一個橋接炬守。
image
-
3. 最后就是最基本的SwiftUI 中的View的Preview顯示方法。創(chuàng)建一個基本的SwiftUI工程就會有這段示例代碼??
image
下面就是愉快的按下Option
+ Command
+ P
的(刷新Preview)快捷鍵剂跟。
我們就可以在XCode11的Preview中顯示我們的UIViewController啦~
最后副一下我的示例代碼
(差不多30行左右的亞子):
import SwiftUI
class UIKitViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .red
let blueView = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
blueView.backgroundColor = .green
view.addSubview(blueView)
}
}
struct UIVCPresenter: UIViewControllerRepresentable {
///UIViewControllerRepresentable 協(xié)議中必須實現(xiàn)的方法 - 當 SwiftUI 準備好顯示 view 時减途,它會調用此方法一次
///作用: 將需要Preview顯示VC 返回出來。
func makeUIViewController(context: UIViewControllerRepresentableContext<UIVCPresenter>) -> UIKitViewController {
return UIKitViewController()
}
///UIViewControllerRepresentable 協(xié)議中必須實現(xiàn)的方法
/// 更新UIViewController時候會調用這個方法 可以做一系列l(wèi)業(yè)務實現(xiàn)曹洽,
func updateUIViewController(_ uiViewController: UIKitViewController, context: UIViewControllerRepresentableContext<UIVCPresenter>) {
}
}
struct swiftUIView: View {
var body: some View {
UIVCPresenter()
}
}
struct UIKitVCPreView : PreviewProvider {
static var previews: some View {
swiftUIView()
}
}