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

如何实现共享元素过渡动画中相邻视图的外推效果?

进阶版UI过渡动画:相邻视图外推效果通用实现思路

针对你提到的这种进阶版UI过渡动画里相邻视图的外推效果,我给你梳理一套通用的实现思路,不用代码也能明白核心逻辑:

  • 识别相邻视图:先定位触发过渡的目标视图在原容器(比如列表、网格)里的左右/上下相邻视图,记录好它们初始的位置、尺寸这些关键信息。
  • 创建视觉替身:别直接操作原视图(容易打乱原有布局),给每个相邻视图做一个完全一样的「替身视图」,把这个替身加到过渡动画的专属容器层里,位置和原视图完全重合。
  • 计算外推路径:根据目标视图的放大方向和幅度,反向算出相邻视图需要移动的距离——比如目标视图向右放大,左侧相邻视图就向左平移,右侧相邻视图向右平移,平移的距离要和目标视图的放大幅度匹配,营造出「被推开」的自然视觉感。
  • 同步动画节奏:把相邻视图替身的平移动画,和目标视图的放大/过渡动画绑定在一起,用相同的动画曲线(比如弹簧动画、线性动画)和时长,保证整个过渡过程连贯不脱节。
  • 收尾清理:动画结束后,把所有替身视图移除,让原容器的布局自然恢复到过渡后的状态。

补充方案说明

我最终采用了Kubba的方案完成了整个过渡效果。另外trungduc提出的tableview单元格高度动画方案,在这个场景下存在一些不足:过渡前后单元格位置出现异常,尝试同步viewcontroller帧动画与单元格高度动画的操作也没成功,但这个方案在其他类似的单元格动态布局动画场景中还是适用的。

项目地址:SharedElementTransition

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:10:51