大师学SwiftUI第16章 - UIKit框架集成

本文详细介绍了SwiftUI中如何使用UIViewRepresentable和UIViewControllerRepresentable协议来集成和控制UIKit和AppKit视图,包括创建、更新和管理视图控制器的过程以及如何通过协调器传递值。

其它相关内容请见​​虚拟现实(VR)/增强现实(AR)&visionOS开发学习笔记​

SwiftUI是一套新框架,因此并没有包含我们构建专业应用所需的所有工具。这意味着我们会需要求助于UIKit(移动设备)和AppKit(Mac电脑)等原生框架所提供的工具。

我们已介绍过UIKit。它是一套SwiftUI在后台实现用于创建大部分视图和控件的框架。有些UIKit类用于运行应用(​​UIApplication​​​)、加载图片(​​UIImage​​​)、管理设备(​​UIDevice​​​)及窗口(​​UIWindow​​​),而另一些定义用于设置应用和场景(​​UiApplicationDelegate​​​和​​UIWindowSceneDelegate​​​)的代理。当然,该框架提供了我们创建界面所需的所有工具,包括两个创建和管理视图的基本类,称为​​UIView​​​和​​UIViewController​​。

最后面这两个类,​​UIView​​​和​​UIViewController​​,是在我们需要对SwiftUI界面添加UIKit特性时需要实现的类。UIView的子类用于在屏幕上显示信息,比如标签和图像,以及创建控件,比如按钮、滑块和开关。而​​UIViewController​​类的子类用于展示视图及包含处理它们的值和与用户交互的必要功能。为了将这些工具集成到SwiftUI界面中,SwiftUI框架定义了两个协议:​​UIViewRepresentable​​​和​​UIViewControllerRepresentable​​。

Representable视图

​UIViewRepresentable​​​协议定义了一结构体,作为​​UIView​​类或其子类所创建对象的一层封装(wrapper)。实现这一协议的结构体可表示SwiftUI界面中的一个UIKit视图。创建及管理UIKit视图,结构体必须要实现如下的方法。

  • ​makeUIView(context: Context)​​:该方法创建一个UIKit视图并返回。​​context​​​参数是对提供视图状态信息的​​UIViewRepresentableContext​​类型结构体的引用。
  • ​updateUIView(UIViewType, context: Context)​​:该方法通过一个绑定属性使用SwiftUI界面所提供的信息更新UIKit视图。第一个参数是对UIKit视图的引用,​​context​​​参数是对提供视图状态信息的​​UIViewRepresentableContext​​类型结构体的引用。
  • ​dismantleUIView(UIViewType, coordinator: Coordinator)​​:该类型方法为释放视图做准备工作。第一个参数是UIKit视图的指针,​​coordinator​​参数是将值发回SwiftUI界面的对象。
  • ​makeCoordinator()​​:该方法创建的对将UIKit视图的信息传回给SwiftUI界面。

要在SwiftUI接口中包含一个​​UIView​​​对象(或其子类所创建对象),我们需要定义一个实现​​UIViewRepresentable​​​协议的结构体,并实现上述的方法。​​makeUIView()​​​和​​updateUIView()​​​方法是必选的。在​​makeUIView()​​方法中,我们必须创建并返回一个UIKit视图实例,​​updateUIView()​​法用于使用SwiftUI界面中所获取的值来更新视图。

下例中创建了一个蓝色背

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值