在 SwiftUI 中使用 UIKit 组件(或 AppKit 组件用于 macOS)是非常常见的需求,特别是当你需要使用 SwiftUI 尚未提供的功能(如复杂的 、、 等)时。 核心机制是包装(Wrapping)。SwiftUI 提供了两个主要的协议来实现这一点: 1. : 用于包装 。 2. : 用于包装 。 以下是详细的步骤和示例: --- 1. 基础概念:生命周期方法 无论你使用哪个协议,都需要实现两个核心方法: (或 ): 作用: 创建并配置 UIKit 视图/控制器的初始实例。 执行时机: 只在 SwiftUI 视图初始化时执行一次。 (或 ): 作用: 当 SwiftUI 的状态(State/Binding)发生变化时,更新 UIKit 视图的属性。 执行时机: 每次 SwiftUI 视图重绘且数据有变化时执行。 --- 2. 示例一:包装简单的 UIView 假设我们需要使用 (虽然 SwiftUI 现在有 ,但这作为一个简单的例子很合适)。 --- 3. 进阶:使用 Coordinator 处理代理 (Delegate) 和数据回传 如果 UIKit 组件需要...