如何平滑和旋转?

时间:2012-03-06 01:49:52

标签: objective-c ios xcode uiview uiimageview

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

我的以下代码要求: 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];
    }

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

答案 2 :(得分:0)

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

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