美文网首页
UIKit与SwiftUI的集成

UIKit与SwiftUI的集成

作者: csr_yang | 来源:发表于2020-05-08 18:39 被阅读0次

    UIKit与SwiftUI的集成

    SwiftUI是iOS13中推出的一个全新的框架,它采用声明式的UI布局,并且有数据与视图同步更新,一套视图多平台使用等很多优点。但是,目前大部分项目仍然使用的是UIKit来进行布局,大规模使用SwiftUI并不现实,但是我们仍然可以在某些地方,局部的少量使用SwiftUI,或者另外一个场景是在SwiftUI中使用UIKit中编写的一些控件,这就需要我们学会UIKit和SwiftUI之间的集成了。

    当我们讨论SwiftUI的集成的时候,你将会听到托管这个词。UIKit App可以托管SwiftUI的视图,SwiftUI App同样也可以托管UIKit的视图

    本篇将讨论下面几个内容

    • 在一个UIKit的项目中托管一个SwiftUI的view

    • 在一个SwiftUI的项目中托管一个vc

    • 在一个SwiftUI的项目中托管一个带有数据依赖关系的UIKit视图

    UIKit中使用SwiftUI视图

    1. 项目中添加要集成的SwiftUI view文件

    2. 设置Hosting Controller,为其设置rootView,rootView就是SwiftUI view

    SwiftUI项目中使用view controller

    1. 将view controller文件加入项目中

    2. 为加入的vc创建一个representation strut,实现makeUIViewController和updateUIViewController两个方法

    3. 在SwiftUI中使用NavigationLink控件,设置desitination为第二步创建的Representation实例

    4. 将SwiftUI包裹在NavigationView中

    image

    预览UIKit视图

    在VC中,添加一个如下strut即可

    #if DEBUG 
    struct ViewControllerPreviews: PreviewProvider {
        static var previews: some View {
            ViewControllerRepresentation()
        } 
    }
    #endif
    

    SwiftUI中使用带有数据依赖关系的UIView视图

    1. 创建一个继承了UIViewRepresentable协议的SwiftUI view

    2. 实现make方法,初始化uiview

    3. 实现update方法,通过SwiftUI view来更新UIKit view

    4. 创建一个Coordinate,实现valueChanged方法,通过UIKit view来更新SwiftUI view

    相关文章

      网友评论

          本文标题:UIKit与SwiftUI的集成

          本文链接:https://www.haomeiwen.com/subject/epdqnhtx.html