Как плавно масштабировать и вращать?

Я видел некоторые приложения, они могут масштабировать и поворачивать изображение одновременно. Не требует отпускания пальца.

Мой следующий код требует: 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 ответа

Решение

Вот код, который вы ищете... Добавьте этот метод к вашему .m файл.

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}
Другие вопросы по тегам