運用SwiftUI加速你現(xiàn)有項目UIKit中的開發(fā)速度。

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

不過我們可以通過SwiftUI中提供的UIViewControllerRepresentable協(xié)議 讓你的UIKit中的VC顯示在XCode11的Preview中, 如下圖。

image

ok 我們直接開始說說如何實現(xiàn)(共三步):

  • 1、我們先暫定我們的UIKit的VC叫UIKitViewController,先做一點最簡單的UI布局

image
  • 2. 創(chuàng)建一個中轉(zhuǎn)結(jié)構(gòu)體UIVCPresenter 遵循并實現(xiàn)UIViewControllerRepresentable 協(xié)議 這個結(jié)構(gòu)體可以當(dāng)做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)的方法 -  當(dāng) SwiftUI 準(zhǔn)備好顯示 view 時,它會調(diào)用此方法一次
    ///作用: 將需要Preview顯示VC 返回出來。
    func makeUIViewController(context: UIViewControllerRepresentableContext<UIVCPresenter>) -> UIKitViewController {
        return UIKitViewController()
    }
    ///UIViewControllerRepresentable  協(xié)議中必須實現(xiàn)的方法
    ///    更新UIViewController時候會調(diào)用這個方法  可以做一系列l(wèi)業(yè)務(wù)實現(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()
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容