UISnapBehavior Animation Glitch
При использовании UISnapBehavior для сброса вида в центр экрана я получаю ожидаемый эффект отскока. Но после прокрутки UIScrollView, который является подпредставлением привязанного представления, демпфирование UISnapBehavior, похоже, имеет другой базовый расчет.
Мое поведение привязки создается так:
guard let recognizerView = recognizer.view else { return }
let snapBehavior = UISnapBehavior(item: recognizer.view.superview!, snapTo: CGPoint(x: recognizerView.superview!.frame.width / 2, y: recognizerView.superview!.frame.height / 2))
snapBehavior.damping = 0.1
animator.addBehavior(snapBehavior)
Перед взаимодействием с представлением прокрутки, которое является подпредставлением распознавателя, SnapBehavior демонстрирует очень преувеличенный эффект отскока (который является желаемым и ожидаемым поведением), но после взаимодействия с представлением прокрутки, затем запускает snapBehavior во второй раз, эффект намного быстрее (меньше демпфирования) несмотря на использование точно такой же постоянной затухания.
Я думаю, что это связано с некоторой ошибкой автоматического размещения, поскольку представление прокрутки позиционируется с автоматическим размещением, а его размер содержимого динамически рассчитывается с помощью ограничений автоматического размещения.
Интересно, что удаление прокрутки заставляет динамическую анимацию снова правильно демпфироваться.