我正在尝试在缩略图框架和全屏框架之间创建交互式动画。向上平移可能会导致框架在两个维度上都增长(直到达到全屏),而向下平移则相反。与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的平移驱动动画?
答案 0 :(得分:2)
我建议在iOS 10中使用UIViewPropertyAnimator
类添加。它可让您轻松地来回暂停,反转或修复动画。
我在GitHub上有一个演示项目(用Swift编写,你可能更难以遵循,因为你使用的是Objective-C:
https://github.com/DuncanMC/UIViewPropertyAnimator-test
该课程实际上非常容易使用。您应该能够从文档中找到它,并且示例项目至少可以作为API的路线图,即使您不能逐行遵循代码