用途:为 iOS 生产应用提供 UIKit 与 SwiftUI 之间的桥接指导,讲解桥接模式本身而非具体的业务视图。
主要能力与决策:包装 UIView 用 UIViewRepresentable;包装 UIViewController 用 UIViewControllerRepresentable;包装 UIGestureRecognizer 子类用 UIGestureRecognizerRepresentable(iOS 18+);在 UIKit 导航中嵌入 SwiftUI 用 UIHostingController;在 UICollectionView/UITableView 单元格中放 SwiftUI 用 UIHostingConfiguration;UIKit 与 SwiftUI 共享状态用 @Observable 共享模型。
关键用法:UIViewRepresentable 的 makeUIView 只调用一次用于创建配置,updateUIView 在每次 SwiftUI 状态变化时调用,应做增量更新而非重建,dismantleUIView 用于清理观察者或定时器;状态通过 updateUIView 从 SwiftUI 流向 UIKit,通过 Coordinator 配合 @Binding 从 UIKit 回流 SwiftUI。不要修改被包装 UIView 的 center、bounds、frame、transform,布局由 SwiftUI 掌控;需要自定义尺寸时重写 intrinsicContentSize 或 sizeThatFits(_:)。滚动跟踪导航栏大标题需调用 navigationBar.setContentScrollView。
适用场景:现有 UIKit 项目中渐进引入 SwiftUI、或 SwiftUI 项目中复用成熟 UIKit 组件。
限制:部分能力需 iOS 16+ 或 iOS 18+;资料未提供具体版本兼容细节、价格或平台信息。