在animateWithDuration中定制轻松?

在做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,但它似乎只接受一个I​​nt。

我可以将自定义缓动应用到Core Animation,但我想为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动画。

您仍然可以执行完成块和动画组。 您可以将多个CA Animations分组到CAAnimationGroup

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

为了完成,请使用CATransaction。

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

在iOS 10.0中,您可以使用UIViewPropertyAnimator

https://developer.apple.com/documentation/uikit/uiviewpropertyanimator

请参阅https://developer.apple.com/videos/play/wwdc2016/216/

链接地址: http://www.djcxy.com/p/86581.html

上一篇: Custom ease in animateWithDuration?

下一篇: How to draw an arrow on every polyline segment on Google Maps V3