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: из ваших вызовов действий распознавателей жестов.