【问题标题】:How to scale and rotate smoothly?如何平滑地缩放和旋转?
【发布时间】:2012-03-06 01:49:52
【问题描述】:

我见过一些应用程序,它们能够同时缩放和旋转图像。它不需要释放手指触摸。

我的以下代码要求: 1. 触摸缩放 2.发布 3. 触摸旋转

如何同时缩放和旋转?

在我的主要代码中:

UIPanGestureRecognizer *imagePanGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveImage:)];
[imagePanGesture setMinimumNumberOfTouches:1];
[imagePanGesture setMaximumNumberOfTouches:1];
[tempImageView addGestureRecognizer:imagePanGesture]; 

UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scaleImage:)];
[tempImageView addGestureRecognizer:pinchGesture];  

UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotateImage:)];
[tempImageView addGestureRecognizer:rotationGesture]; 

单独缩放和旋转

- (void)scaleImage:(UIPinchGestureRecognizer *)recognizer 
{
    if([recognizer state] == UIGestureRecognizerStateEnded) 
    {
        previousScale = 1.0;
        return;
    }

    CGFloat newScale = 1.0 - (previousScale - [recognizer scale]);

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

    [[recognizer view] setTransform:newTransform];
    previousScale = [recognizer scale];
}

- (void)rotateImage:(UIRotationGestureRecognizer *)recognizer 
{
    if([recognizer state] == UIGestureRecognizerStateEnded) {


            previousRotation = 0.0;
            return;
        }

        CGFloat newRotation = 0.0 - (previousRotation - [recognizer rotation]);

        CGAffineTransform currentTransformation = [recognizer view].transform;
        CGAffineTransform newTransform = CGAffineTransformRotate(currentTransformation, newRotation);

        [[recognizer view] setTransform:newTransform];

        previousRotation = [recognizer rotation];
    }

【问题讨论】:

    标签: objective-c ios xcode uiview uiimageview


    【解决方案1】:
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      这是您要查找的代码...将此方法添加到您的 .m 文件中。

      -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
          return YES;
      }
      

      【讨论】:

        猜你喜欢
        • 2020-01-06
        • 1970-01-01
        • 2010-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-09
        相关资源
        最近更新 更多