运用SwiftUI加速你现有项目UIKit中的开发速度。

SwiftUI的声明式布局是真的炫酷。不过真正运用到项目中还需要点时间。

不过我们可以通过SwiftUI中提供的UIViewControllerRepresentable协议 让你的UIKit中的VC显示在XCode11的Preview中, 如下图。

image

ok 我们直接开始说说如何实现(共三步):

  • 1、我们先暂定我们的UIKit的VC叫UIKitViewController,先做一点最简单的UI布局

image
  • 2. 创建一个中转结构体UIVCPresenter 遵循并实现UIViewControllerRepresentable 协议 这个结构体可以当做UIKit和SwiftUI的一个桥接。

image
  • 3. 最后就是最基本的SwiftUI 中的View的Preview显示方法。创建一个基本的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  协议中必须实现的方法 -  当 SwiftUI 准备好显示 view 时,它会调用此方法一次
    ///作用: 将需要Preview显示VC 返回出来。
    func makeUIViewController(context: UIViewControllerRepresentableContext) -> UIKitViewController {
        return UIKitViewController()
    }
    ///UIViewControllerRepresentable  协议中必须实现的方法
    ///    更新UIViewController时候会调用这个方法  可以做一系列l业务实现,
    func updateUIViewController(_ uiViewController: UIKitViewController, context: UIViewControllerRepresentableContext) {
    }
}

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

struct UIKitVCPreView : PreviewProvider {
    static var previews: some View {
        swiftUIView()
    }
}

你可能感兴趣的:(运用SwiftUI加速你现有项目UIKit中的开发速度。)