使用服务器驱动的 UI 向 SwiftUI 过渡

主要观点:五年前苹果推出 SwiftUI 框架,起初适用于小应用,对于像 HEMA 这样的大型电商应用不够成熟,后随 iOS 15 和 16 版本的发布出现转机,Q42 团队开始将荷兰连锁商店 HEMA 的应用从 UIKit 过渡到 SwiftUI。
关键信息

  • Q42 自 2019 年开始为 HEMA 构建应用,采用 Server Driven UI(SDUI),在 HEMA 应用中该方法很适用。
  • 过渡主要集中在 UI 渲染部分,利用UICollectionViewUIHostingConfiguration等,解决了支持 iOS 15 用户的问题。
  • 过渡过程中遇到状态管理、高度变化、ScrollView 问题等挑战。
  • 完成过渡后,效率提升,开发者和设计团队合作加强,期待在 iOS 16 中用新NavigationStack构建导航。
    重要细节
  • iOS 13 引入UIHostingController但不支持与CollectionViewCells交互,iOS 16 引入UIHostingConfiguration解决该问题,通过UIHostingConfigurationBackport支持 iOS 15。
  • 为实现 UIKit 和 SwiftUI 组件的过渡,利用协议扩展和SwiftUIContentViewProviding协议进行切换。
  • 过渡过程中逐步转换组件,先测试单个组件性能,再逐步扩展到整个代码库。
  • 引入 SwiftUI 后可在 Xcode 画布中预览工作,加强与设计团队合作,还创建每周设计会议。
  • 统计数据显示 58 个 SDUI 组件从 UIKit 转换到 SwiftUI,4 位开发者参与,从概念验证到全面发布历时 442 天,编写超过 10000 行代码。
阅读 18
0 条评论