<!--
{
  "availability" : [
    "iOS: 2.0.0 -",
    "iPadOS: 2.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.5.0 -",
    "tvOS: 9.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "QuartzCore",
  "identifier" : "/documentation/QuartzCore/CAMediaTimingFunctionName/easeInEaseOut",
  "metadataVersion" : "0.1.0",
  "role" : "Type Property",
  "symbol" : {
    "kind" : "Type Property",
    "modules" : [
      "Core Animation",
      "QuartzCore"
    ],
    "preciseIdentifier" : "c:@kCAMediaTimingFunctionEaseInEaseOut"
  },
  "title" : "easeInEaseOut"
}
-->

# easeInEaseOut

Ease-in-ease-out pacing, which causes an animation to begin slowly, accelerate through the middle of its duration, and then slow again before completing.

```
static let easeInEaseOut: CAMediaTimingFunctionName
```

## Discussion

This is a Bézier timing function with the control points (0.42,0.0) and (0.58,1.0).

The following code shows how to create a basic animation object using ease-in-ease-out interpolation.

```swift
let verticalAnimation = CABasicAnimation(keyPath: "position.y")  
verticalAnimation.fromValue = 310  
verticalAnimation.toValue = 10  
verticalAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
```

A layer animated with the animation created by the code above and with linearly interpolated horizontal movement would describe a path similar to the following figure.

![Path taken using ease-in-ease-out timing function](images/com.apple.quartzcore/media-2776818@2x.png)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)