UIPercentDrivenInteractiveTransition с CABasicAnimation

При использовании управляемого жестом UIPercentDrivenInteractiveTransition с CABasicAnimation (или любой другой CAAnimation), после finishInteractiveTransition, анимация переходит на конечную позицию, а не плавно анимируется, как в случае использования блочной анимации UIView. Я пытаюсь выяснить, как плавно анимировать на FininteractiveTransition, чтобы закончить при использовании CAAnimation.

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

Я создал небольшой пример проекта, который демонстрирует проблему.

https://github.com/stringcode86/UIPercentDrivenInteractiveTransitionWithCABasicAnimation

Спасибо всем, кто проводит время, глядя на это. Я ценю это.

1 ответ

Решение

РЕШЕНИЕ

Как выясняется, решение состоит в том, чтобы манипулировать слоями начала времени. Я попытаюсь объяснить решение чуть более подробно ниже. Есть два решения одно использование UIPercentDrivenTransition подкласс или реализации UIViewControllerInteractiveTransitioning протокол. Пользовательский UIViewControllerInteractiveTransitioning находится в главной ветви, а реализация UIPercentDrivenTransition находится в ветви UIPercentDrivenTransitionImplementation.

https://github.com/stringcode86/UIPercentDrivenInteractiveTransitionWithCABasicAnimation

ОБЪЯСНЕНИЕ

UIPercentDrivenTransition использует анимацию в animateTransition: для реализации updateInteractiveTransition:, Я предполагаю, что они просто звонят animateTransition: от startInteractiveTransition: а затем установите скорость слоя (возможно, слоя просмотра контейнеров) до 0,0 и манипулируйте его timeOffSet, Это позволяет им автоматически перемещать ваш переход назад и вперед. Это делает это для ваших анимаций UIView. Проблема с CAAnimations заключается в их begingTime, timeOffSet, speed свойства не установлены правильно по какой-то причине. Если вы установите для них разумные значения, вы сможете перемещать весь анимированный контент в containerView вперед и назад. Я создал SCPercentDrivenTransition ведьма является альтернативой UIPercentDrivenTransition, Вам нужно только переопределить animateTransition: и вызвать handleGesture: из ваших вызовов действий распознавателей жестов.

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