UIViewPropertyAnimator 开头有短动画片段

Posted

技术标签:

【中文标题】UIViewPropertyAnimator 开头有短动画片段【英文标题】:UIViewPropertyAnimator with short animation segments in the beginning 【发布时间】:2021-05-10 00:05:26 【问题描述】:

假设UIViewPropertyAnimator 设置如下:

let animator = UIViewPropertyAnimator(duration: 2, curve: .easeInOut)  
   myView.center = newCenterPoint

为此,我可以添加另一个以延迟开始,以主要结束的动画:

animator.addAnimation (
   myView.alpha = 0.5
, withDelayFactor: 0.5)

所以上面从 1 秒开始,并持续 1 秒以完成主要。

问题

有没有办法将动画添加到UIViewPropertyAnimator,它从一开始就开始,但只持续了主要动画师的一小部分时间?从 0 开始,只持续 1 秒?

【问题讨论】:

【参考方案1】:

为什么不直接使用其他动画师?两个动画师可以同时作用于同一个视图,只要他们的动画不冲突:

    let animator = UIViewPropertyAnimator(duration: 2, curve: .easeInOut) 
        self.myView.center.y += 100
    
    let animator2 = UIViewPropertyAnimator(duration: 1, curve: .easeInOut) 
        self.myView.backgroundColor = .red
    
    animator.startAnimation(); animator2.startAnimation()

动画将视图向下移动两秒钟,同时在第一秒内将视图变为红色。

(说了这么多,在现实生活中我可能会为此使用 CAAnimationGroup,而不是属性动画师。)

【讨论】:

第二个动画师会减慢速度吗?我使用动画师的原因是让它随着平移手势一起进步。 CAAnimationGroup 可以做到这一点吗? 我不知道,但这不是你问的。

以上是关于UIViewPropertyAnimator 开头有短动画片段的主要内容,如果未能解决你的问题,请参考以下文章

扩展 UIViewPropertyAnimator?

为啥在 UIViewPropertyAnimator 中使用“unowned”

UIViewPropertyAnimator 的反弹效果

完成块内的 UIViewPropertyAnimator 状态?

NSLayoutConstraints 的 UIViewPropertyAnimator 使视图消失

UIViewPropertyAnimator - 简单地停止所有动画,而不是特定的?