iOS 15系统UIStatusBarAnimation .slide动画无法正常生效问题问询
结论
这是iOS 15引入的系统级问题,不属于代码实现错误。
原因说明
苹果在iOS 15版本重构了状态栏的渲染与动画调度逻辑,没有对UIStatusBarAnimation.slide类型做向下兼容,即使开发者正确实现preferredStatusBarUpdateAnimation属性回调、主动调用setNeedsStatusBarAppearanceUpdate()触发状态刷新,系统也会强制将状态栏动画降级为淡入淡出效果。
兼容修复方案
你可以通过将刷新逻辑包裹在UIView动画块内的方式强制触发slide动画,代码示例如下:
UIView.animate(withDuration: 0.3) { self.setNeedsStatusBarAppearanceUpdate() }
如果以上方案在你的场景中不生效,也可以通过获取状态栏视图、主动修改其frame的方式模拟slide动画效果,注意该兼容逻辑仅需要在iOS 15版本上执行,iOS 16及以上版本苹果已修复该问题,不需要额外兼容。
内容的提问来源于stack exchange,提问作者Gizmodo
相关产品推荐
相关产品推荐

