【问题标题】:Finish some animations from UIViewPropertyAnimator earlier之前从 UIViewPropertyAnimator 完成一些动画
【发布时间】:2019-03-22 20:53:24
【问题描述】:

我正在寻找一种将一些动画添加到 UIViewPropertyAnimator 的方法,该动画比其他动画更早完成。 UIViewPropertyAnimator 有一个方法,你可以添加延迟动画

animator.addAnimations(animation: (()-> Void), delayFactor: CGFloat)

所以动画从delayFactor0.5 开始,持续时间的50%。

我搜索类似的东西

animator.addAnimations(animation: (()->Void), realtiveDuration: CGFloat)

所以动画在持续时间的 50% 后在 relativeDurationof 0.5 处结束。

经过一番研究,我找到了解决方案

animator.addAnimations {
    UIView.animateKeyframes(withDuration: duration, delay: 0.0, animations: {
        UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.3) {
            view.alpha = 0.0
        }
    })
}

存档此行为。 问题是,我想在某种自动化中使用它,我迭代一些元素并为每个元素调用一个方法:

func animation(view: UIView) -> (() -> Void) {
    return {
        view.alpha = 0.0
    }
}

使用例如方法时效果很好

animator.addAnimations(animation: element.animation(element.view), delayFactor: 0.5) 但我不能在里面调用这个

.addKeyframe(...){
    element.animation(element.view)
}

也许你们中的一些人有解决方案? 我正在考虑覆盖UIViewPropertyAnimator,例如添加要求的方法animator.addAnimations(animation: (()->Void), realtiveDuration: CGFloat) 或其他东西,但将我的舒适区留在那里。

【问题讨论】:

    标签: ios swift animation duration uiviewpropertyanimator


    【解决方案1】:

    你可以这样调用:

      UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5, animations: element.animation(element.view))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-14
      • 2017-03-15
      • 2016-11-29
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      相关资源
      最近更新 更多