how to set animation curve when using keyframe animation in ios?
Actually, you can use the same curve flags that you use for animateWithDuration:delay:options:animations:completion:. Just "binary or" them in with the other options in your call to animateKeyframesWithDuration:delay:options:animations:completion:
The documentation is confusing, but it does work.
The curve values you can use are:
UIViewAnimationOptionCurveEaseInOut = 0 << 16,
UIViewAnimationOptionCurveEaseIn = 1 << 16,
UIViewAnimationOptionCurveEaseOut = 2 << 16,
UIViewAnimationOptionCurveLinear = 3 << 16,
The default animation curve you get is 0, or ease-in, ease-out.
Swift 2.0 will not allow casting of UIViewAnimationOptions
as UIViewKeyframeAnimationOptions
. It will also not allow |
ing them together.
However, there is an initializer for UIViewKeyframeAnimationOptions
that takes a rawValue
. So, the following code works to put UIViewAnimationOptions
into UIViewKeyframeAnimationOptions
:
let animationOptions: UIViewAnimationOptions = .CurveEaseOut
let keyframeAnimationOptions: UIViewKeyframeAnimationOptions = UIViewKeyframeAnimationOptions(rawValue: animationOptions.rawValue)
Then I can pass keyframeAnimationOptions
to animateKeyframesWithDuration
and everything works great.
For Swift 4:
let animationOptions = AnimationOptions.curveEaseOut
let options = KeyframeAnimationOptions(rawValue: animationOptions.rawValue)