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

iOS 26中UINavigationController的push/pop动画不受layer.speed影响的咨询

关于UINavigationController Push/Pop动画的实现变更

核心结论

UINavigationController自Liquid Glass特性推出后,确实不再使用CAAnimations实现push/pop转场动画。

改用的实现方式

苹果转向了基于UIKit内部的私有动画调度系统,这套系统更贴合iOS全局动画协调机制(比如适配Liquid Glass的流畅过渡、系统级动画同步),不再依赖Core Animation的图层动画栈。它直接操作视图的布局与属性变更,相关逻辑不通过CALayer的动画接口对外暴露。

定位与控制这类动画的方案

由于新动画系统不通过CAAnimation暴露,layer.animationKeys()、layer.animation(forKey:)这类旧方法无法捕获到相关动画。若需控制或观察转场动画,可尝试以下方式:

  • 实现导航控制器转场代理:通过UINavigationControllerDelegate的navigationController(_:animationControllerFor:from:to:)方法,自定义转场动画控制器(遵循UIViewControllerAnimatedTransitioning协议)。即使系统默认动画不再依赖CAAnimation,你仍可通过自定义逻辑接管转场,实现动画速度调整、状态监听等需求。
  • 监听视图布局变更:push/pop过程中,导航控制器的容器视图、导航栏等子视图会发生布局变化,可通过KVO监听视图的frame、bounds属性,或在视图的layoutSubviews方法中追踪动画过程。
  • 利用UIView动画回调:系统默认转场本质仍基于UIView动画机制,可通过UIView.animate(withDuration:animations:completion:)的完成回调监听动画结束,或尝试用UIViewPropertyAnimator关联系统动画(不过对系统默认转场的控制能力有限)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 04:52:27