首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >完成 Liquid Glass 的适配了吗?| 肘子的 Swift 周报 #0102

完成 Liquid Glass 的适配了吗?| 肘子的 Swift 周报 #0102

作者头像
东坡肘子
发布2025-10-20 18:14:06
发布2025-10-20 18:14:06
100
举报

weekly.fatbobman.com[1]订阅本周报的电子邮件版本。访问我的博客 肘子的 Swift 记事本[2]查看更多的文章。加入 Discord[3]社区,与 2000+ 中文开发者深入交流 Swift、SwiftUI 开发体验。

完成 Liquid Glass 的适配了吗?

明天 iOS 26 就要正式发布了,必然会有大批用户第一时间升级,体验全新的 Liquid Glass 设计语言。相比往年,今年的适配工作量明显更大——尤其对于交互复杂的应用,可能会遇到许多意想不到的问题。

Liquid Glass 不仅仅是视觉风格的改变,它在交互逻辑上也有诸多调整。一些系统组件在新旧版本间差异巨大,加之临近发布时仍存在不少未解决的 Bug,用户很难分辨问题到底源自系统还是应用本身。可以预见,接下来几周,开发者们免不了要在用户支持和问题解释上打一场"硬仗"。

无论你是否喜欢 Liquid Glass 的视觉风格,它无疑会成为新 iPhone 的重要卖点。但如果苹果能在开发者体验上更具前瞻性,尽早提供完善的系统组件和文档支持,应用生态就能更快、更一致地拥抱这一新设计语言,最终让所有用户受益。

你完成 Liquid Glass 的适配了吗?

前一期内容全部周报列表

欢迎 点赞 ♥️转发 👉

近期推荐

聊聊 Observation 框架 (We Need to Talk About Observation)[4]

在 Observation 框架诞生三年之际,Jared Sinclair[5]对比了 Observation 与基于 Combine 的 ObservableObject。他指出,尽管 Observation 能减少 @Published样板代码、提升 UI 更新效率、支持嵌套组合,并更契合结构化并发与 SwiftUI,但也存在一些问题:@State替代 @StateObject会导致对象频繁重建,初始化成本高;withObservationTracking设计复杂、难以发现和正确使用且缺乏统一取消机制;Observations 虽引入 AsyncSequence,但仍存在取消和生命周期管理不清晰的问题,容易引发内存管理隐患;相较 Combine 的 AnyCancellable,新方案在简洁性和易用性上明显不足。

尽管如此,作者认为 @Observable 依然是苹果的正确方向,尤其在与 SwiftUI 和 SwiftData 结合时前景可期。但 Apple 在非 UI 编程场景的 API 设计上不够“有主见”,开发者仍需在架构层面权衡取舍。


Swift 6.2 的 Main Actor 隔离值得采用吗?(Should you opt-in to Swift 6.2’s Main Actor isolation?)[6]

Swift 6.2 引入了 Default Actor isolation 配置,开发者可以为 Target 设置默认隔离。将其设为 Main Actor 让代码更贴近早期“默认在主线程执行”的直觉。尽管这一设计旨在简化部分并发场景下的开发,但也带来新的疑问:不同 Target 应该如何选择合适的设置?在这篇文章中,Donny Wals[7]分享了他的思考与策略。

在 Xcode 26 中,App Target 默认启用 Main Actor,而 SPM Package 默认不启用,这种差异可能让初学者或对该特性不熟悉的开发者感到困惑。或许更好的做法,是在项目创建时就提供显式选项,让开发者从一开始就能明确选择。


SwiftUI 日期范围选择器 (Date Range picker in SwiftUI)[8]

在许多应用中,用户需要选择时间范围(周、月、年或自定义区间),而系统的 DatePicker 往往无法满足需求。Kyryl Horbushko[9]通过“分而治之”的设计思路,将复杂的日期范围选择器拆分为多个独立组件(SegmentPicker、各类型日期选择器等),并巧妙利用 MultiDatePicker配合状态管理实现了连续日期范围选择,避免了重新构建复杂的日历组件。整个方案充分展示了协议、泛型和 SwiftUI 的强大组合能力。


深入理解 SwiftUI 的 TimelineView[10]

TimelineView 是一个没有自身外观的容器视图,会在预定时间点重新绘制其内容,因而非常适合构建 实时时钟、计时器、动画可视化、实时数据或逐帧动画。在本文中,Kyle Ye[11]不仅介绍了 TimelineView 的常见用法,还分享了在 OpenSwiftUI[12]中复刻该功能时的诸多细节。其中对 @Attribute的应用与解析,也为理解和掌握 OpenAttributeGraph[13]提供了很好的参考。


我一直想要的 Swift Android 开发环境 (The Swift Android Setup I Always Wanted)[14]

Swift 6 引入了对 Android NDK 的官方支持,解决了长期以来在 Android 平台使用 Swift 的最大障碍。开发者现在可以直接 import Android,无需再手动处理头文件。Mikhail Isaev[15]在本文中展示了如何借助 JNIKit[16]在 Android 上优雅地使用 Swift,并详细讲解了通过 VSCode + Dev Containers + Swift Stream IDE 快速搭建 Swift Android 项目,配置完成后可自动拉取 Docker 镜像与工具链并生成 Gradle 工程的完整流程。

JNIKit[17]将繁琐的 JNI C API 封装为 Swifty 接口,大幅简化了 Swift 与 JVM 的交互,包括类加载、对象缓存和跨线程环境绑定。


SwiftUI 重绘机制深度解析 (SwiftUI Redraw System In Depth: Attributes, Recomputation, Diffing and Observation)[18]

在 SwiftUI 中,优化应用性能的关键之一是减少不必要的视图重绘。然而,由于这涉及状态管理、依赖关系、视图比较等诸多机制,即便 SwiftUI 已经发布多年,依然有许多开发者理解不足。在本文中,Mathis Gaignet[19]将 SwiftUI 的重绘过程拆解为「属性 → 重算 → diffing → 观察」四个层次,并结合 Self._printChanges()、Instruments 的 Effect Graph、Core Animation 等工具,通过大量实验展示了不同视图声明方式对性能的实际影响。

工具

Swift-Build GitHub Action[20]

为 Swift 项目配置跨平台 CI/CD 向来不是一件轻松的事。Leo G Dion[21]开源的 swift-build GitHub Action 让这一切变得简单:只需几行配置即可在 macOS 和 Linux 上运行 Swift Package Manager 的构建与测试,同时内置智能缓存策略,大幅提升 CI 效率。想深入了解其工作原理,可以阅读作者的这篇详细介绍[22]

该 Action 已在 GitHub Marketplace[23]上架,可直接添加到工作流中使用,完全免费。


AppKitUI[24]

许多 macOS 开发者仍在使用 AppKit,但又羡慕 SwiftUI 的声明式语法和数据绑定机制。Darren Ford[25]开发的 AppKitUI 巧妙地填补了这个空白:它为 AppKit 控件提供了类 SwiftUI 的链式语法、数据绑定和布局系统,让你无需 XIB 文件就能构建复杂的 NSView 界面,甚至支持在 Xcode Preview 中实时预览。该库兼容至 macOS 10.13,特别适合那些需要支持旧版系统但又想享受现代开发体验的项目。

往期内容

#101 从开放平台到受控生态:谷歌宣布 Android 开发者验证政策 | 肘子的 Swift 周报

#100 写给这段旅程,也写给未来的自己

#099 未来将至:人形机器人运动会

THANK YOU

如果你觉得这份周报或者我的文章对你有所帮助,欢迎 点赞赞赏,并将其 转发给更多的朋友。

参考资料

[1]

weekly.fatbobman.com: https://weekly.fatbobman.com

[2]

肘子的 Swift 记事本: https://fatbobman.com

[3]

Discord: https://t.ly/gzxeh

[4]

聊聊 Observation 框架 (We Need to Talk About Observation): https://l.fatbobman.com/w0102-01

[5]

Jared Sinclair: https://github.com/jaredsinclair

[6]

Swift 6.2 的 Main Actor 隔离值得采用吗?(Should you opt-in to Swift 6.2’s Main Actor isolation?): https://l.fatbobman.com/w0102-02

[7]

Donny Wals: https://x.com/donnywals

[8]

SwiftUI 日期范围选择器 (Date Range picker in SwiftUI): https://l.fatbobman.com/w0102-03

[9]

Kyryl Horbushko: https://www.linkedin.com/in/kyryl-horbushko-67936bb5/

[10]

深入理解 SwiftUI 的 TimelineView: https://l.fatbobman.com/w0102-04

[11]

Kyle Ye: https://x.com/KyleSwifter

[12]

OpenSwiftUI: https://github.com/OpenSwiftUIProject/OpenSwiftUI

[13]

OpenAttributeGraph: https://github.com/OpenSwiftUIProject/OpenAttributeGraph

[14]

我一直想要的 Swift Android 开发环境 (The Swift Android Setup I Always Wanted): https://l.fatbobman.com/w0102-05

[15]

Mikhail Isaev: https://www.linkedin.com/in/mihaelisaev/

[16]

JNIKit: https://github.com/swifdroid/jni-kit

[17]

JNIKit: https://github.com/swifdroid/jni-kit

[18]

SwiftUI 重绘机制深度解析 (SwiftUI Redraw System In Depth: Attributes, Recomputation, Diffing and Observation): https://l.fatbobman.com/w0102-06

[19]

Mathis Gaignet: https://www.linkedin.com/in/mathis-g-30b43321a/

[20]

Swift-Build GitHub Action: https://l.fatbobman.com/w0102-07

[21]

Leo G Dion: https://x.com/leogdion

[22]

这篇详细介绍: https://brightdigit.com/tutorials/swift-build/

[23]

GitHub Marketplace: https://github.com/marketplace/actions/swift-build-and-test

[24]

AppKitUI: https://l.fatbobman.com/w0102-08

[25]

Darren Ford: https://www.linkedin.com/in/darren-ford-dev/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 肘子的Swift记事本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 完成 Liquid Glass 的适配了吗?
  • 近期推荐
    • 聊聊 Observation 框架 (We Need to Talk About Observation)[4]
    • Swift 6.2 的 Main Actor 隔离值得采用吗?(Should you opt-in to Swift 6.2’s Main Actor isolation?)[6]
    • SwiftUI 日期范围选择器 (Date Range picker in SwiftUI)[8]
    • 深入理解 SwiftUI 的 TimelineView[10]
    • 我一直想要的 Swift Android 开发环境 (The Swift Android Setup I Always Wanted)[14]
    • SwiftUI 重绘机制深度解析 (SwiftUI Redraw System In Depth: Attributes, Recomputation, Diffing and Observation)[18]
  • 工具
    • Swift-Build GitHub Action[20]
    • AppKitUI[24]
    • THANK YOU
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档