private void AddOffAnimation()
{
if (_checkMarkLayer == null)
return;
if (Math.Abs(_animationDuration) < 0.0001f)
{
_onBoxLayer.RemoveFromSuperLayer();
_checkMarkLayer.RemoveFromSuperLayer();
return;
}
CABasicAnimation animation;
switch (_onAnimationType)
{
case BemAnimationType.BemAnimationTypeStroke:
animation = _animationManager.StrokeAnimationReverse(true);
_onBoxLayer.AddAnimation(animation, "strokeEnd");
animation.Delegate = _animationDelegate;
_checkMarkLayer.AddAnimation(animation, "strokeEnd");
break;
case BemAnimationType.BemAnimationTypeFill:
CAKeyFrameAnimation wiggle = _animationManager.FillAnimationWithBounces(1, 0.18f, true);
wiggle.Duration = _animationDuration;
wiggle.Delegate = _animationDelegate;
_onBoxLayer.AddAnimation(wiggle, "transform");
_checkMarkLayer.AddAnimation(_animationManager.OpacityAnimationReverse(true), "opacity");
break;
case BemAnimationType.BemAnimationTypeBounce:
float amplitude = _boxType == BemBoxType.BemBoxTypeSquare ? 0.20f : 0.35f;
wiggle = _animationManager.FillAnimationWithBounces(1, amplitude, true);
wiggle.Duration = _animationDuration / 1.1;
var opacityAnimation = _animationManager.OpacityAnimationReverse(true);
opacityAnimation.Delegate = _animationDelegate;
_onBoxLayer.AddAnimation(opacityAnimation, "opacity");
_checkMarkLayer.AddAnimation(wiggle, "transform");
break;
default:
animation = _animationManager.StrokeAnimationReverse(true);
_onBoxLayer.AddAnimation(animation, "opacity");
animation.Delegate = _animationDelegate;
_checkMarkLayer.AddAnimation(animation, "opacity");
break;
}
}