
🚀 前言
随着 WWDC26 Platforms State of the Union 的尘埃落定,一大波新 API 扑面而来。
今年的 SwiftUI 就像一个终于"开窍"的高手------不再沉迷于花哨的表面功夫,而是静下心来,彻底解决了那些让开发者在深夜疯狂砸键盘的基础痛点。

从这周开始,我们将带你逐一拆解这些激动人心的变化。让我们先从最硬核的几个"神仙更新"看起吧。;)

🎨 视觉体验:Liquid Glass,官方帮你"躺平"
去年大火的 Liquid Glass(液态玻璃)设计语言在各处做了不少底层调整。好消息是:作为开发者,你几乎什么都不用干,可以直接"躺赢"。

Apple 把底层的渲染逻辑做到了极致。像"玻璃着色(Glass Tint)"这类复杂的材质融合效果,你完全不需要去写繁琐的滤镜或材质修饰符,系统会自动适配并应用到你的界面上。
用最少的代码,呈现最原生的 Apple 质感。

✨ TabView 迎新宠:prominent 醒目模式登场
产品经理是不是经常要求:"底部中间那个『发布』按钮,给我做得又大又亮、凸出来!"以前我们要手搓一堆自定义组件,现在 SwiftUI 终于官方下场,引入了一个全新的 Tab 角色------prominent。

你可以用它来让某个标签页"鹤立鸡群",非常适合放在末尾作为主要的操作入口。
swift
TabView {
Tab("insights", systemImage: "chart.xyaxis.line") {
NavigationStack {
InsightsFeatureView()
.navigationTitle("insights")
}
}
Tab("awareness", systemImage: "text.book.closed") {
NavigationStack {
AwarenessView()
.navigationTitle("awareness")
}
}
// 🌟 视觉绝对 C 位的醒目标签
Tab("create", systemImage: "pencil", role: .prominent) {
NavigationStack {
CreateFeatureView()
.navigationTitle("create")
}
}
}

🔓 砸碎枷锁:滑动操作终于摆脱 List 的束缚了!
这绝对是今年最让开发者热泪盈眶的更新。曾几何时,为了实现右滑删除,我们不得不把各种酷炫卡片硬塞进僵硬的 List 里。

现在,swipeActions 视图修饰符正式"越狱"!它可以用在任何容器上了------List、ScrollView、LazyVStack,甚至是你手搓的自定义布局,统统支持。你只需要在最外层搭配全新的 swipeActionsContainer 修饰符即可解锁:
swift
ScrollView {
LazyVStack {
ForEach(items) { item in
ItemRow(item)
// 在任何容器内都可以自由添加滑动菜单
.swipeActions {
Button("Delete", role: .destructive) {
delete(item)
}
}
}
}
}
.swipeActionsContainer() // 🔓 加上这把解锁钥匙即可

🧱 拖拽排序更丝滑:reorderContainer 全场景制霸
不仅是滑动,拖拽排序也变得前所未有的简单。全新的 reorderContainer 修饰符让重排操作在任意容器中都变得轻而易举。

同样,它支持 List、ScrollView、Lazy Stack 和自定义布局。只需给子元素加上 reorderable 标记,然后在外层处理数据数组的重排回调就行了:
swift
struct ContentView: View {
@State private var landmarks: [Landmark] = []
var body: some View {
VStack {
ForEach(landmarks) { landmark in
LandmarkView(landmark)
}
.reorderable() // 1. 标记元素可拖拽
}
// 2. 告诉容器如何将重排应用到底层数据
.reorderContainer(for: Landmark.self) { difference in
difference.apply(to: &landmarks)
}
}
}

🎞️ 导航转场新伙伴:Cross-fade (交叉淡入淡出)
觉得默认的左右推拉太单调?导航转场终于迎来了新伙伴 .crossFade(交叉淡入淡出)效果,并且可以和 .zoom 配合使用。

虽然目前我们仍然不能像 UIKit 那样 100% 手动控制导航动画的关键帧,但现在内置的武器库丰富多了:automatic、zoom 和 cross-fade 三选一,让你的页面跳转更具电影感。
swift
struct ContentView: View {
@State private var showSheet = false
var body: some View {
VStack {
Button("Show Sheet") {
showSheet = true
}
.sheet(isPresented: $showSheet) {
Text("Sheet Content")
.presentationDetents([.medium])
// 应用交叉淡入淡出转场
.navigationTransition(.crossFade)
}
}
}
}

💾 终于来了!AsyncImage 原生支持缓存配置
从诞生起,AsyncImage 就因为不支持本地缓存被大家疯狂吐槽。今年,它终于进化了------正式引入了缓存机制!

你不仅能缓存,还能通过配置自定义的 URLSession,精准控制内存和磁盘的缓存水位,想怎么管就怎么管:
swift
// 随心所欲定制你的缓存策略
let customCache = URLCache(
memoryCapacity: 20 * 1024 * 1024, // 20MB 内存缓存
diskCapacity: 100 * 1024 * 1024, // 100MB 磁盘缓存
directory: nil // 使用系统默认缓存目录
)
let configuration = URLSessionConfiguration.default
configuration.urlCache = customCache
let session = URLSession(configuration: configuration)
AsyncImage(
request: URLRequest(
url: imageURL,
cachePolicy: .reloadIgnoringLocalCacheData
)
)
.asyncImageURLSession(session) // 完美接管网络层

🎛️ Toolbar 精细化控制:想显就显,想藏就藏
适配多尺寸屏幕(比如在折叠屏或小屏 iPhone 间切换)一直是个难题。Apple 新增了一批强大的 Toolbar 视图修饰符,让你对工具栏的可见性拥有了像素级的掌控力。

你可以指定哪些按钮在空间吃紧时优先显示,把次要操作藏进折叠菜单,甚至死死钉住某个核心按钮。
swift
struct RootView: View {
var body: some View {
ContentView()
.toolbar {
// 1. 死死钉在顶部右侧
ToolbarItem(placement: .topBarPinnedTrailing) {
SecondaryControl()
}
// 2. 赋予最高显示优先级,屏幕再小也要露脸
ToolbarItem {
PrimaryControl()
}
.visibilityPriority(.high)
// 3. 次要按钮乖乖收进溢出折叠菜单
ToolbarOverflowMenu {
Button("Action 1") { }
Button("Action 2") { }
}
}
}
}

📄 焕然一新的文档工作流与 AI 编程助理
今年,文档类(Document-based)应用获得了焕然一新的外观和手感,同时底层性能也得到了显著提升。细心的人会发现,其实 Xcode 自己就已经开始用上这些基于 SwiftUI 的文档改进了------这大概也解释了为什么 Apple 今年在文档应用上投入了如此巨大的工作量。
作为"One More Thing"级别的彩蛋,Xcode 还为 AI 编程引擎引入了两个专门的超级技能:SwiftUI Specialist(SwiftUI 专家) 和 What's New in SwiftUI。当你对新 API 一筹莫展时,直接在 Xcode 里向 AI 请教即可。

💡 总结:走向成熟的"工业级"框架
SwiftUI 正朝着更灵活、更深度系统集成化的方向稳步前进。
回看这周的新花样,今年的更新也许谈不上像刚推出时那样"颠覆认知的大改",但它确实如同一把锋利的手术刀,极其精准地清除了我们在容器、导航、工具栏和文档工作流方面常年忍受的各种小障碍。
这些脚踏实地的改进,让 SwiftUI 彻底洗去了早年的"玩具感",变得越来越成熟稳重。它给了我们更多理由,在真正的生产级超级应用中放心、大胆地拥抱它。
感谢宝子的观赏,我们下次不见不散!8-)