帧之间的手势驱动动画

时间:2017-03-30 00:09:52

标签: ios objective-c uigesturerecognizer

我正在尝试在缩略图框架和全屏框架之间创建交互式动画。向上平移可能会导致框架在两个维度上都增长(直到达到全屏),而向下平移则相反。与Youtube为其视频播放器制作动画的方式非常相似。

我尝试使用UIPanGestureRecognizer,并在识别器状态为POPSpringAnimation时激活UIGestureRecognizerStateEnded,如下所示:

- (void)didPan:(UIPanGestureRecognizer *)recognizer
{
    CGPoint point = [recognizer translationInView:self.view.superview];
    self.view.center = CGPointMake(self.view.center.x, self.view.center.y + point.y);
    [recognizer setTranslation:CGPointZero inView:self.view.superview];
    if (recognizer.state == UIGestureRecognizerStateEnded)
    {
        CGPoint velocity = [recognizer velocityInView:self.view.superview];
        // Initaite POPSpringAnimation using velocity and target frame
        // either fullscreen or thumbnail
    }
}

这样做的结果是视图的中心在平移时会更新,但是只有在停止平移后它的大小才会开始变化。我不想在didPan:中手动调整帧的大小,而不知道用什么比例。

如何创建一个仅从帧A到帧B的平移驱动动画?

This框架几乎完全相同,但动画不是交互式的。 this回答也是如此。

1 个答案:

答案 0 :(得分:2)

我建议在iOS 10中使用UIViewPropertyAnimator类添加。它可让您轻松地来回暂停,反转或修复动画。

我在GitHub上有一个演示项目(用Swift编写,你可能更难以遵循,因为你使用的是Objective-C:

https://github.com/DuncanMC/UIViewPropertyAnimator-test

该课程实际上非常容易使用。您应该能够从文档中找到它,并且示例项目至少可以作为API的路线图,即使您不能逐行遵循代码