23 lines
847 B
Swift
23 lines
847 B
Swift
//
|
|
// Copyright 2024 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import UIKit
|
|
|
|
extension UIViewPropertyAnimator {
|
|
/// Helper for adding animations to a property animator that end earlier
|
|
/// than the inherited duration and respect the inherited timing curve.
|
|
///
|
|
/// Internally sets up a keyframe animation with a keyframe ending at the
|
|
/// relative duration specified by `durationFactor`.
|
|
public func addAnimations(withDurationFactor durationFactor: CGFloat, _ animations: @escaping () -> Void) {
|
|
addAnimations {
|
|
UIView.animateKeyframes(withDuration: UIView.inheritedAnimationDuration, delay: 0) {
|
|
UIView.addKeyframe(withRelativeStartTime: 0, relativeDuration: durationFactor) {
|
|
animations()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|