0

我想知道 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使用了一些新的UIView Key-Frame Animations API,但我找不到一种方法来匹配在animatedTransition函数中编写的代码(可以是任何代码)并且是动画完成的任意百分比状态。

您对他们如何实现它有一些想法吗?

(请......不要像“你能在不知道它是如何工作的情况下使用这个 API 吗?”这样的小问题)。

4

1 回答 1

0

我发现“技巧”可能只是开始动画,然后使用以下代码管理图层速度和时间偏移:

CALayer *layer = self.theView.layer;
CFTimeInterval pausedTime = 2.0 * v;
layer.speed = 0.0;
layer.timeOffset = pausedTime;

我正在做一些测试,效果很好:)

于 2014-03-23T17:16:02.197 回答