運用SwiftUI加速你現有項目UIKit中的開發速度。

SwiftUI的聲明式佈局是真的炫酷。不過真正運用到項目中還須要點時間。

不過咱們能夠經過SwiftUI中提供的UIViewControllerRepresentable協議 讓你的UIKit中的VC顯示在XCode11的Preview中, 以下圖。swift

ok 咱們直接開始說說如何實現(共三步):

  • 一、咱們先暫定咱們的UIKit的VC叫UIKitViewController,先作一點最簡單的UI佈局

  • 2. 建立一箇中轉結構體UIVCPresenter 遵循並實現UIViewControllerRepresentable 協議 這個結構體能夠當作UIKit和SwiftUI的一個橋接。

  • 3. 最後就是最基本的SwiftUI 中的View的Preview顯示方法。建立一個基本的SwiftUI工程就會有這段示例代碼😄

下面就是愉快的按下Option + Command + P 的(刷新Preview)快捷鍵。

咱們就能夠在XCode11的Preview中顯示咱們的UIViewController啦~

最後副一下個人示例代碼(差很少30行左右的亞子):ide

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  協議中必須實現的方法 -  當 SwiftUI 準備好顯示 view 時,它會調用此方法一次
    ///做用: 將須要Preview顯示VC 返回出來。
    func makeUIViewController(context: UIViewControllerRepresentableContext<UIVCPresenter>) -> UIKitViewController {
        return UIKitViewController()
    }
    ///UIViewControllerRepresentable  協議中必須實現的方法
    ///    更新UIViewController時候會調用這個方法  能夠作一系列l業務實現,
    func updateUIViewController(_ uiViewController: UIKitViewController, context: UIViewControllerRepresentableContext<UIVCPresenter>) {
    }
}

struct swiftUIView: View {
    var body: some View {
        UIVCPresenter()
    }
}

struct UIKitVCPreView : PreviewProvider {
    static var previews: some View {
        swiftUIView()
    }
}複製代碼
相關文章
相關標籤/搜索