             animation.fromValue = 0
             animation.toValue = 1
             animation.duration = 0.5
-            animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
+            animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
             animation.delegate = self
             animation.isRemovedOnCompletion = false
             componentLayer.add(animation, forKey: "componentAnimation")

                strokeAnimation.fromValue = 0
                strokeAnimation.toValue = 1
                strokeAnimation.fillMode = kCAFillModeBoth
                strokeAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
                strokeAnimation.delegate = self
                strokeAnimation.isRemovedOnCompletion = false
                lineLayer.add(strokeAnimation, forKey: "lineAnimation")

                alphaAnimation.fromValue = 0
                alphaAnimation.toValue = 1
                alphaAnimation.fillMode = kCAFillModeBoth
                alphaAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
                alphaAnimation.delegate = self
                alphaAnimation.isRemovedOnCompletion = false
                subView?.add(alphaAnimation, forKey: "alphaAnimation")
