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 во второй раз, эффект намного быстрее (меньше демпфирования) несмотря на использование точно такой же постоянной затухания.

Я думаю, что это связано с некоторой ошибкой автоматического размещения, поскольку представление прокрутки позиционируется с автоматическим размещением, а его размер содержимого динамически рассчитывается с помощью ограничений автоматического размещения.

Интересно, что удаление прокрутки заставляет динамическую анимацию снова правильно демпфироваться.

0 ответов

Другие вопросы по тегам