Я следовал руководству по созданию интерактивной анимации центра управления iOS с помощью UIViewPropertyAnimator:
http://www.swiftkickmobile.com/building-better-app-animations-swift-uiviewpropertyanimator/
при смахивании вверх или вниз по нижнему меню после отпускания пальца я хочу добавить скорость панорамирования к UIViewPropertyAnimator
и продолжить анимацию:
popupViewPanned(recognizer:) {
switch recognizer.state {
.
.
.
// after finger released
case .end:
// continue all animations using pan velocity with spring timing
let normalizedPanVelocity: // how to normalize pan velocity
runningAnimators.forEach { $0.continueAnimation(withTimingParameters: spring(for: velocity()), durationFactor: 0) }
}
}
func velocity() -> CGVector {
let pan = panRecognizer
let progress = runningAnimators[0].fractionComplete
let fraction = popupOffset*(1 - progress)
return CGVector(with: pan.velocity(in: view), fraction: fraction)
}
func spring(for velocity: CGVector = .zero) -> UITimingCurveProvider {
return UISpringTimingParameters(dampingRatio: 0.9, initialVelocity: velocity)//UISpringTimingParameters(mass: 2.5, stiffness: 80, damping: 25, initialVelocity: velocity)
}
проблема в том, что когда я быстро смахиваю вверх или вниз по меню и отпускаю тоньше, кажется, что анимация ударяется о стену (медленно быстро), затем продолжаю отдыхать
так как я могу решить проблему? Я пытался целый день, но я не мог это исправить