Files
comaps/iphone/Maps/UI/Search/SearchOnMap/Presentation/ModalPresentationAnimator.swift
Konstantin Pastbin e3e4a1985a Organic Maps sources as of 02.04.2025 (fad26bbf22ac3da75e01e62aa01e5c8e11861005)
To expand with full Organic Maps and Maps.ME commits history run:
  git remote add om-historic [om-historic.git repo url]
  git fetch --tags om-historic
  git replace squashed-history historic-commits
2025-05-08 21:10:51 +07:00

39 lines
1.2 KiB
Swift

enum PresentationStepChangeAnimation {
case none
case slide
case slideAndBounce
}
final class ModalPresentationAnimator {
private enum Constants {
static let animationDuration: TimeInterval = kDefaultAnimationDuration
static let springDamping: CGFloat = 0.85
static let springVelocity: CGFloat = 0.2
}
static func animate(with stepAnimation: PresentationStepChangeAnimation = .slide,
animations: @escaping (() -> Void),
completion: ((Bool) -> Void)?) {
switch stepAnimation {
case .none:
animations()
completion?(true)
case .slide:
UIView.animate(withDuration: Constants.animationDuration,
delay: 0,
options: .curveEaseOut,
animations: animations,
completion: completion)
case .slideAndBounce:
UIView.animate(withDuration: Constants.animationDuration,
delay: 0,
usingSpringWithDamping: Constants.springDamping,
initialSpringVelocity: Constants.springVelocity,
options: .curveLinear,
animations: animations,
completion: completion)
}
}
}