You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中如何在ZoomTransition过渡时保持背景颜色一致性?

SwiftUI Zoom过渡时保持页面A背景颜色的解决方案

问题修复思路

页面A在zoom过渡中背景变白,是因为过渡系统会临时处理matchedTransitionSource包裹的视图,导致其外部/底层的背景被忽略。只需把预设背景放在不受过渡影响的容器层级即可。

修改后的代码示例

页面A

ZStack {
    // 预设背景放在最底层,脱离过渡影响范围
    Color.yourCustomBackgroundColor // 替换为你的预设颜色
        .ignoresSafeArea()
    
    PartnerCard()
        .matchedTransitionSource(id: item.id, in: animation)
}

页面B(注意ID匹配)

.navigationTransition(.zoom(sourceID: item.id, in: animation))

关键注意点

  • 页面A的matchedTransitionSource(id:)必须和页面B的navigationTransition(.zoom(sourceID:))使用完全相同的ID,否则过渡匹配逻辑会失效。你当前代码中页面A用item.id、页面B用"world",这是不匹配的,务必统一。
  • 背景颜色要设置在ZStack最底层并添加.ignoresSafeArea(),确保全屏覆盖且不受过渡视图的层级影响。

内容的提问来源于stack exchange,提问作者Ehz uiq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:05:58