<!--
{
  "availability" : [
    "iOS: 13.0.0 -",
    "iPadOS: 13.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 10.15.0 -",
    "tvOS: 13.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 6.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SwiftUI",
  "identifier" : "/documentation/SwiftUI/Animation/easeInOut(duration:)",
  "metadataVersion" : "0.1.0",
  "role" : "Type Method",
  "symbol" : {
    "kind" : "Type Method",
    "modules" : [
      "SwiftUI"
    ],
    "preciseIdentifier" : "s:7SwiftUI9AnimationV9easeInOut8durationACSd_tFZ"
  },
  "title" : "easeInOut(duration:)"
}
-->

# easeInOut(duration:)

An animation with a specified duration that combines the behaviors of
in and out easing animations.

```
static func easeInOut(duration: TimeInterval) -> Animation
```

## Parameters

`duration`

The length of time, expressed in seconds, that
the animation takes to complete.

## Return Value

An ease-in ease-out animation with a specified duration.

## Discussion

An easing animation provides motion with a natural feel by varying
the acceleration and deceleration of the animation, which matches
how things tend to move in reality. An ease in and out animation
starts slowly, increasing its speed towards the halfway point, and
finally decreasing the speed towards the end of the animation.

Use `easeInOut(duration:)` when you want to specify the time it takes
for the animation to complete. Otherwise, use [`easeInOut`](/documentation/SwiftUI/Animation/easeInOut) to perform
the animation for a default length of time.

The following code shows an example of animating the size changes of
a [`Circle`](/documentation/SwiftUI/Circle) using an ease in and out animation with a duration of
one second.

```
struct ContentView: View {
    @State private var scale = 0.5

    var body: some View {
        VStack {
            Circle()
                .scale(scale)
                .animation(.easeInOut(duration: 1.0), value: scale)
            HStack {
                Button("+") { scale += 0.1 }
                Button("-") { scale -= 0.1 }
            }
        }
    }
}
```

![A video that shows a circle enlarging for one second, then shrinking for another second to its original size using an ease-in ease-out animation.](videos/com.apple.SwiftUI/animation-13-easeineaseout-duration~dark.mp4)

---

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)