WWDC26 · 321Dive into lazy stacks and scrolling with SwiftUI
当前 0:07 7s官方 ↗
Session 321·Dive into lazy stacks and scrolling with SwiftUI·深度内容已验证 · 5 sections · 5 cards
深度内容已验证

视频证据

已具备 session-specific claims、anchors、evidence refs、脚本分段和 CDP 验证;这是可审核完成态。

正在接入 Apple HLS 视频源…

脚本分段

分段导航

每段对应一个视频时间段,说明“讲什么、支撑哪条洞察、对应哪些锚点”。完整字幕不在公开页复刻。

Lazy stacks 是 SwiftUI 长列表的核心——但 AI 动态内容会破坏 recycling

deep_candidate

Rens(UI Frameworks 工程师)开场:Lazy stacks 是 SwiftUI 长滚动内容的核心组件。AI 生成动态内容插入可能破坏 lazy stack 的 recycling 机制,导致性能问题。

SwiftUILazyVStackdrag and dropDesigndesign_ai_ux
确认 AI 动态内容对 lazy stack 的挑战。 · source segments: 0–71

Alignment 和锚定——内容变化时保持滚动位置稳定

deep_candidate

顶部可见视图锚定使滚动位置稳定。LazyVStack 在内容变化时需重新对齐。AI 插入动态内容可能导致锚定偏移,需特别注意。

LazyHStackShowcaseButHereLazyVStack
确认内容变化时的锚定策略。 · source segments: 72–143

估计内容偏移 vs 子视图相对位置——选择合适的定位策略

deep_candidate

Lazy stack 的内容偏移是估计值,当估计变化时精确定位点可能偏移。更好的方式是使用可见区域子视图的相对位置。AI 动态内容场景应优先使用相对定位。

StepViewLazyVStackForEachSwiftDataBut
确认估计偏移与相对定位的选择依据。 · source segments: 144–215

条件替代方案——用 ContentUnavailableView 避免不必要的 lazy stack 加载

deep_candidate

当数据为空时,在层级更高的 view 中展示 ContentUnavailableView 替代显示空 lazy stack。lazy stack 只对可见视图进行最小变更检查,不做完整 diff。

ButDesigndesign_ai_uxplatform_appsscreenshots
确认条件布局对性能的优化效果。 · source segments: 216–287

状态变量生命周期——视图回收时状态被删除

deep_candidate

Lazy stack 在视图移出屏幕后不会立即删除,会保留若干更新周期。最终删除时状态变量也随之删除。AI 动态内容需确保状态在 recycling 中正确恢复。

SwiftUImodelDesigndesign_ai_uxHere
确认状态变量在 recycling 中的生命周期管理。 · source segments: 288–359
下左 · 时间锚点

Anchor Skeleton

0:07↗
1:07↗
2:20↗
3:26↗
4:28↗
5:30↗
6:36↗
7:54↗
9:00↗
10:14↗
11:15↗
12:26↗
13:33↗
14:41↗
15:37↗
16:47↗
17:48↗
18:57↗
19:51↗
20:57↗
下右 · 深度内容已验证

Workbench Status

I1deep_candidate

AI 生成动态内容插入可能破坏 SwiftUI lazy stack 的 recycling 机制——影响滚动性能和视图状态一致性。需使用稳定 identity 和相对定位避免锚定偏移。

I2deep_candidate

内容变化时应使用子视图相对定位而非 lazy stack 的估计偏移。AI 动态内容插入会导致估计值不准,相对定位提供更稳定的滚动位置保持。

I3deep_candidate

321 是 AI 动态内容在 SwiftUI 中的性能指南——与 269(SwiftUI 基线)和 322(图形效果)构成 UI 层从性能到视觉的全链路。

I4deep_candidate

Lazy stack 不会立即删除移出屏幕的视图——会保留若干更新周期。AI 插入大量动态内容时应注意状态变量在 recycling 中的生命周期。

I5deep_candidate

当 AI 数据为空时,使用 ContentUnavailableView 替代空 lazy stack。lazy stack 不做完整 diff,但状态管理和视图回收仍需关注。