gpt4 book ai didi

ios - animateWithDuration 中的自定义缓动?

转载 作者:搜寻专家 更新时间:2023-10-30 21:58:29 27 4
gpt4 key购买 nike

在执行 UIView.animateWithDuration 时,我想定义一条自定义曲线以方便使用,而不是默认曲线:.CurveEaseInOut、.CurveEaseIn、.CurveEaseOut、.CurveLinear。

这是我想应用于 UIView.animateWithDuration 的示例:

let ease = CAMediaTimingFunction(controlPoints: Float(0.8), Float(0.0), Float(0.2), Float(1.0))

我尝试制作自己的 UIViewAnimationCurve,但它似乎只接受一个 Int。

我可以将自定义缓动应用于核心动画,但我想为 UIView.animateWithDuration 自定义缓动以获得更简单和优化的代码。 UIView.animateWithDuration 对我来说更好,因为我不必为每个动画属性和更简单的完成处理程序定义动画,也不必将所有动画代码放在一个函数中。

到目前为止,这是我的非工作代码:

let customOptions = UIViewAnimationOptions(UInt((0 as NSNumber).integerValue << 50))
UIView.setAnimationCurve(UIViewAnimationCurve(rawValue: 5)!)

UIView.animateWithDuration(2, delay: 0, options: customOptions, animations: {
view.layer.position = toPosition
view.layer.bounds.size = toSize
}, completion: { finished in
println("completion")
})

最佳答案

那是因为 UIViewAnimationCurve 是一个枚举 - 它基本上是人类可读的整数值表示,用于确定要使用的曲线。

如果要定义自己的曲线,需要使用CA动画。

您仍然可以制作完成 block 和动画组。您可以将多个 CA 动画分组到一个 CAAnimationGroup

let theAnimations = CAAnimationGroup()
theAnimations.animations = [positionAnimation, someOtherAnimation]

要完成,请使用 CATransaction。

CATransaction.begin()
CATransaction.setCompletionBlock { () -> Void in
// something?
}
// your animations go here
CATransaction.commit()

关于ios - animateWithDuration 中的自定义缓动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31302409/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com