PropertyAnimator
public final class PropertyAnimator<Target, Value> where Target: AnyObject, Value: VectorConvertible
Manages the application of animations to a property of type Value
on
the target object.
Property animators retain the target object, so they should not be used
to animate properties of self
.
let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
let sizeAnimator = PropertyAnimator(target: view, keyPath: \.bounds.size)
/// Spring physics will move the view's size to the new value.
sizeAnimator.spring(to: CGSize(width: 300, height: 300))
/// Some time in the future...
/// The value will keep the same velocity that it had from the preceeding
/// animation, and a decay function will slowly bring movement to a stop.
sizeAnimator.decay(drag: 2.0)
-
The object to be animated.
Declaration
Swift
public let target: Target
-
The keypath describing the property to be animated.
Declaration
Swift
public let keyPath: ReferenceWritableKeyPath<Target, Value>
-
Initializes a new property animator with the given target and keypath.
Declaration
Swift
public init(target: Target, keyPath: ReferenceWritableKeyPath<Target, Value>)
-
Animates the property using the given animation.
Declaration
Swift
public func animate<T>(with animation: T) -> AnimationRunner<Value> where T: Animation, T.Value == Value
-
Returns true if an animation is in progress.
Declaration
Swift
public var isAnimating: Bool
-
Cancels any running animation.
Declaration
Swift
public func cancelRunningAnimation()
-
assigning to this value will remove any running animation.
Declaration
Swift
public var value: Value
-
Undocumented
Declaration
Swift
public var velocity: Value
-
Starts a spring animation with the given properties, adopting the property’s current velocity as
initialVelocity
.Declaration
Swift
public func spring(to target: Value, tension: Scalar = 30.0, damping: Scalar = 5.0, threshold: Scalar = 0.1) -> AnimationRunner<Value>
-
Starts a spring animation with the given properties.
Declaration
Swift
public func spring(to target: Value, initialVelocity: Value, tension: Scalar = 30.0, damping: Scalar = 5.0, threshold: Scalar = 0.1) -> AnimationRunner<Value>
-
Undocumented
Declaration
Swift
public func animate(to finalValue: Value, duration: Double, timingFunction: TimingFunction = UnitBezier.swiftOut) -> AnimationRunner<Value>
-
Starts a decay animation with the current velocity of the property animator.
Declaration
Swift
public func decay(drag: Scalar = 3.0, threshold: Scalar = 0.1) -> AnimationRunner<Value>
-
Starts a decay animation with the given initial velocity.
Declaration
Swift
public func decay(initialVelocity: Value, drag: Scalar = 3.0, threshold: Scalar = 0.1) -> AnimationRunner<Value>