<!--
{
  "availability" : [
    "iOS: 7.0.0 -",
    "iPadOS: 7.0.0 -",
    "macCatalyst: 13.1.0 -",
    "tvOS: -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/UIPercentDrivenInteractiveTransition",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "UIKit"
    ],
    "preciseIdentifier" : "c:objc(cs)UIPercentDrivenInteractiveTransition"
  },
  "title" : "UIPercentDrivenInteractiveTransition"
}
-->

# UIPercentDrivenInteractiveTransition

An object that drives an interactive animation between one view controller and another.

```
@MainActor class UIPercentDrivenInteractiveTransition
```

## Overview

A percent-driven interactive transition object relies on a transition animator delegate—a custom object that adopts the [`UIViewControllerAnimatedTransitioning`](/documentation/UIKit/UIViewControllerAnimatedTransitioning) protocol—to set up and perform the animations.

To use this concrete class, return an instance of it from your view controller delegate when asked for an interactive transition controller. As user events arrive that would affect the progress of a transition, call the [`update(_:)`](/documentation/UIKit/UIPercentDrivenInteractiveTransition/update(_:)), [`cancel()`](/documentation/UIKit/UIPercentDrivenInteractiveTransition/cancel()), and [`finish()`](/documentation/UIKit/UIPercentDrivenInteractiveTransition/finish()) methods to reflect the current progress. For example, you might call these methods from a gesture recognizer to reflect how much of the gesture is completed.

You can subclass [`UIPercentDrivenInteractiveTransition`](/documentation/UIKit/UIPercentDrivenInteractiveTransition), but if you do so you must start each of your method overrides with a call to the `super` implementation of the method.

## Topics

### Accessing transition attributes

[`timingCurve`](/documentation/UIKit/UIPercentDrivenInteractiveTransition/timingCurve)

The timing curve to use when driving the animations.

[`completionCurve`](/documentation/UIKit/UIPercentDrivenInteractiveTransition/completionCurve)

Indicates the animation completion curve for an interactive transition.

[`duration`](/documentation/UIKit/UIPercentDrivenInteractiveTransition/duration)

The overall duration (in seconds) of the transition animation.

[`percentComplete`](/documentation/UIKit/UIPercentDrivenInteractiveTransition/percentComplete)

The amount of the transition (specified as a percentage of the overall duration) that’s complete.

[`completionSpeed`](/documentation/UIKit/UIPercentDrivenInteractiveTransition/completionSpeed)

The speed of the transition animation.

[`wantsInteractiveStart`](/documentation/UIKit/UIPercentDrivenInteractiveTransition/wantsInteractiveStart)

A Boolean value indicating whether the animations are interactive initially.

### Managing a transition

[`update(_:)`](/documentation/UIKit/UIPercentDrivenInteractiveTransition/update(_:))

Updates the completion percentage of the transition.

[`pause()`](/documentation/UIKit/UIPercentDrivenInteractiveTransition/pause())

Pauses an interruptible transition animation.

[`cancel()`](/documentation/UIKit/UIPercentDrivenInteractiveTransition/cancel())

Notifies the system that user interactions canceled the transition.

[`finish()`](/documentation/UIKit/UIPercentDrivenInteractiveTransition/finish())

Notifies the system that user interactions signaled the completion of the transition.



---

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)