SwiftUI随笔-生活工作点滴iOS技术集合

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

2019-07-06  本文已影响162人  liaoworkinn

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

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

image

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

image image 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<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()
    }
}
上一篇下一篇

猜你喜欢

热点阅读