<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macCatalyst: -",
    "tvOS: -",
    "visionOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/UITimingCurveProvider",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "UIKit"
    ],
    "preciseIdentifier" : "c:objc(pl)UITimingCurveProvider"
  },
  "title" : "UITimingCurveProvider"
}
-->

# UITimingCurveProvider

An interface for providing the timing information needed to perform animations.

```
@MainActor protocol UITimingCurveProvider : NSCoding, NSCopying
```

## Overview

An object that adopts the [`UITimingCurveProvider`](/documentation/UIKit/UITimingCurveProvider) protocol provides the timing information needed to perform animations with a [`UIViewPropertyAnimator`](/documentation/UIKit/UIViewPropertyAnimator) object. A timing curve defines the velocity at which animated properties change to their new values over the duration of the animation. A custom timing curve provider can specify timing using the built-in UIKit curves, a cubic Bézier curve, a spring-based timing function, or a combination of timing information.

When implementing this protocol in a custom object, you must provide implementations for all of the properties. Use the [`timingCurveType`](/documentation/UIKit/UITimingCurveProvider/timingCurveType) property to specify which timing information your object provides. Configure the other properties with the actual timing curve values.

## Topics

### Getting the timing information

[`timingCurveType`](/documentation/UIKit/UITimingCurveProvider/timingCurveType)

The type of timing information to use.

[`cubicTimingParameters`](/documentation/UIKit/UITimingCurveProvider/cubicTimingParameters)

The cubic timing parameters to use.

[`springTimingParameters`](/documentation/UIKit/UITimingCurveProvider/springTimingParameters)

The spring-based timing parameters to use.

### Constants

[`UITimingCurveType`](/documentation/UIKit/UITimingCurveType)

Constants indicating the type of timing information to use.

## Relationships

### Inherits From

[`NSCoding`](/documentation/Foundation/NSCoding)

[`NSCopying`](/documentation/Foundation/NSCopying)

### Conforming Types

[`UICubicTimingParameters`](/documentation/UIKit/UICubicTimingParameters)

[`UISpringTimingParameters`](/documentation/UIKit/UISpringTimingParameters)

---

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)