带有不透明动画的 CAMediaTimingFunction

Posted

技术标签:

【中文标题】带有不透明动画的 CAMediaTimingFunction【英文标题】:CAMediaTimingFunction with opacity animation 【发布时间】:2018-06-13 17:54:01 【问题描述】:

我有一个 UIView,我想在 10 秒内将不透明度设置为 0。但是,动画应该在 7.5 秒后开始。这是因为我首先对帧更改进行动画处理,并且 UIView 应该仅在动画的最后 1/4 持续时间中淡出。这是我的尝试:

override func viewDidLoad() 
    let x = UIView()
    view.addSubview(x)
    x.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
    x.backgroundColor = .black

    let animation = CABasicAnimation(keyPath: "opacity")
    animation.timingFunction = CAMediaTimingFunction(controlPoints: 0, 0, 0, 1)
    animation.fromValue = 1
    animation.toValue = 0
    animation.duration = 10
    animation.fillMode = kCAFillModeForwards

    x.layer.add(animation, forKey: "opacity")


UIView 会立即淡出。如何使用 mediaTimingFunction 延迟它?

【问题讨论】:

定时函数用于控制动画在进行时的节奏。它不能造成延迟。使用 beginTime 创建延迟。 【参考方案1】:

将持续时间设置为 2.5 秒,并在开始帧动画后 7.5 秒开始动画

animation.beginTime = CACurrentMediaTime() + 7.5

【讨论】:

以上是关于带有不透明动画的 CAMediaTimingFunction的主要内容,如果未能解决你的问题,请参考以下文章

iOS 11:带有不透明导航栏的导航控制器内带有滚动视图的弹出视图控制器在转换期间导致奇怪的内容动画

jQuery不透明度动画不起作用,但任何其他动画都可以

带有透明 UIImageView (iOS) 的页面卷曲动画

如何为 DropShadowEffect 的不透明度设置动画?

动画时透明UITableViewCell闪烁背景

Java:动画 GIF 会自动部分透明