Я хотел бы знать, как Apple реализовала свою замечательную интерактивную систему переходов, и я думаю, что было бы интересно создать что-то подобное просто в качестве эксперимента.
Это мои мысли по этой "проблеме".
Разработчик создает нужную ему анимацию внутри UIView animationWithDuration
и называется эта анимация благодаря animatedTransition
:
-(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{
... Perform configurations, get data about from/to controllers.
[UIView animateWithDuration:self.presentationDuration
delay:0.0f
usingSpringWithDamping:0.4f
initialSpringVelocity:6.0f
options:UIViewAnimationOptionCurveEaseIn animations:^{
toViewController.view.center = aValueFromPreviousConfig;
} completion:^(BOOL finished) {
[transitionContext completeTransition:YES];
}];
}
Мое любопытство начинается здесь. Как, исходя из этого определения, Apple может осуществить интерактивный переход?
Как они берут анимацию, определенную в этой функции, и преобразуют ее в интерактивную?
Я предполагаю, что Apple использует что-то из своего нового API анимации ключевых кадров UIView, но я не могу найти способ сопоставить код, написанный в функции анимированного перехода (это может быть любой код), и произвольный процентный статус завершения анимации.
У вас есть мысли о том, как они это реализовали?
(пожалуйста... без шуток типа "Вы могли бы просто использовать этот API, не зная, как он работает?").