iOS:使用惯性和头顶的捏捏手势进行缩放

iOS:使用惯性和头顶的捏捏手势进行缩放,ios,objective-c,Ios,Objective C,我对iOS还比较陌生,我正试图弄清楚如何使用捏手势来利用惯性和头顶进行缩放(我不知道在这种情况下,头顶这个词是否正确,在德语中它将被称为“Überschwingen”) 基本上它应该做什么:它应该有一个最大和最小的比例(在我的例子中是1.0到4.0),你可以在其中缩放。当手势完成时,它应该以给定的速度绘制一个曲线动画,同时允许视图在给定的比例上下移动,然后返回到最小或最大值,就像张力一样 为此,我让手势识别器运行,并利用我的最小和最大比例(使用stackoverflow中的示例)成功地让它运行。

我对iOS还比较陌生,我正试图弄清楚如何使用捏手势来利用惯性和头顶进行缩放(我不知道在这种情况下,头顶这个词是否正确,在德语中它将被称为“Überschwingen”)

基本上它应该做什么:它应该有一个最大和最小的比例(在我的例子中是1.0到4.0),你可以在其中缩放。当手势完成时,它应该以给定的速度绘制一个曲线动画,同时允许视图在给定的比例上下移动,然后返回到最小或最大值,就像张力一样

为此,我让手势识别器运行,并利用我的最小和最大比例(使用stackoverflow中的示例)成功地让它运行。到目前为止,我得到的是:

- (void)handle_pinch:(UIPinchGestureRecognizer *)recognizer
{

    if([recognizer state] == UIGestureRecognizerStateBegan) {
        previousScale = 1.0;
        lastPoint = [recognizer locationInView:[recognizer view]];
    }

    if ([recognizer state] == UIGestureRecognizerStateChanged) {

        CGFloat currentScale = [[[recognizer view].layer valueForKeyPath:@"transform.scale"] floatValue];

        // Constants to adjust the max/min values of zoom
        const CGFloat kMaxScale = 4.0;
        const CGFloat kMinScale = 1.0;

        CGFloat newScale = 1 -  (previousScale - [recognizer scale]); // new scale is in the range (0-1)
        newScale = MIN(newScale, kMaxScale / currentScale);
        newScale = MAX(newScale, kMinScale / currentScale);
        scale = newScale;

        CGAffineTransform transform = CGAffineTransformScale([[recognizer view] transform], newScale, newScale);

        [recognizer view].transform = transform;

        CGPoint point = [recognizer locationInView:[recognizer view]];
        CGAffineTransform transformTranslate = CGAffineTransformTranslate([[recognizer view] transform], point.x-lastPoint.x, point.y-lastPoint.y);

        [recognizer view].transform = transformTranslate;
        NSLog(@"Transformed");
    }       
}

但我现在知道如何在这里添加动画了。谢谢你的帮助

您应该使用UIScrollView来实现从收缩到缩放的效果,因为UIScrollView已经与动画集成在一起了。只需将UIView添加到UIScrollView中

下面是关于UIScrollView的精彩教程。他正在使用UIImageView,但UIView将以类似的方式运行


您应该使用UIScrollView来实现收缩到缩放的效果,因为UIScrollView已经与动画集成在一起。只需将UIView添加到UIScrollView中

下面是关于UIScrollView的精彩教程。他正在使用UIImageView,但UIView将以类似的方式运行