【问题标题】:How to fix missing fade animation CATransition in ios15?如何修复 ios 15 中缺少的淡入淡出动画过渡?
【发布时间】:2021-12-15 12:20:35
【问题描述】:

我有一个自下而上的文本推送动画。在 iOS 14 及更早版本中,它使用淡入淡出动画。从 iOS 15 开始,行为发生了变化:隐式淡入淡出消失了。关于如何取回它的任何想法?

新层必须以0到1的不透明度进入,而旧的层必须以0的不透明度进入。

let pushAnimation: CATransition = {
  let animation = CATransition()
  animation.timingFunction = CAMediaTimingFunction(name: .easeIn)
  animation.type = .push
  animation.subtype = .fromTop
  animation.duration = 0.5
  return animation
}()
...

label.layer.add(pushAnimation, forKey: nil)
label.text = newText

【问题讨论】:

    标签: ios animation core-animation ios15 catransition


    【解决方案1】:

    您完全正确,这种行为在 iOS 15 中发生了变化。您可能需要向 Apple 提交错误报告。然而,隐含的不透明度更改可以说总是错误的,因此他们可能会回答说现在可以按预期工作。

    这里的最小解决方案可能是在过渡中添加淡入淡出动画:

        let ba = CABasicAnimation(keyPath: #keyPath(CALayer.opacity))
        ba.duration = 0.5
        ba.fromValue = 0
        label.layer.add(ba, forKey: nil)
    

    然而,事实是,CATransition 是非常简单的,如果你想要你可以控制的动画,你应该使用 real 动画。例如,视图转换动画将允许您在以任何您希望的方式对其进行动画处理时将一个视图替换为另一个视图,并且可以完全控制位置动画、alpha 动画等。

    【讨论】:

    • 感谢@matt 的回答 不幸的是,我无法将CATransitionCABasicAnimation 组合使用。我尝试了两个连续动画,还尝试了CAAnimationGroup。它也不起作用。我和你一样,得出的结论是可以使用两个 UIView 实现类似的动画。但是,我希望仍有一些方法可以解决此问题。
    猜你喜欢
    • 1970-01-01
    • 2020-01-06
    • 2013-11-08
    • 2013-08-30
    • 1970-01-01
    • 2012-02-04
    • 2015-01-17
    • 1970-01-01
    • 2021-01-28
    相关资源
    最近更新 更多