0

非常に奇妙な問題があります。アプリケーションに UIRotationGestureRecognizer を実装して画像を回転させています。私の問題は、画像の回転を開始すると、別の指にジャンプすることがあるということです。例: 1 本の指で画像をドラッグしてから、2 番目の指で回転を開始しましたが、画像は 2 番目の指に移動します。それは正常ですか?それは修正できますか?私が使用しているコードは次のとおりです。

if([recognizer state] == UIGestureRecognizerStateEnded) {

    prevRotation = 0.0;
    return;
}

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

CGAffineTransform currentTransformation = image.transform;
CGAffineTransform newTransform = CGAffineTransformRotate(currentTransformation, newRotation);

image.transform = newTransform;

prevRotation = [recognizer rotation];

センターの最後の場所を保存して再度適用しようとしましたが、次のように機能しません。

lastPoint=image.center;

if([recognizer state] == UIGestureRecognizerStateEnded) {

    prevRotation = 0.0;
    return;
}

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

CGAffineTransform currentTransformation = image.transform;
CGAffineTransform newTransform = CGAffineTransformRotate(currentTransformation, newRotation);

image.transform = newTransform;

prevRotation = [recognizer rotation];
image.center=lastPoint;
4

1 に答える 1

0

このコードを試してください:

-(void)rotate:(id)sender
{

    [self.view bringSubviewToFront:[(UIRotationGestureRecognizer*)sender view]];

    self.imageTag = [[sender view]tag];
    NSLog(@"sender tag %d", self.imageTag);
    if([(UIRotationGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {

        lastRotation = 0.0;
        return;
    }

    CGFloat rotation = 0.0 - (lastRotation - [(UIRotationGestureRecognizer*)sender rotation]);

    CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform;
    CGAffineTransform newTransform = CGAffineTransformRotate(currentTransform,rotation);

    [[(UIRotationGestureRecognizer*)sender view] setTransform:newTransform];

    lastRotation = [(UIRotationGestureRecognizer*)sender rotation];
}
于 2012-07-23T06:59:08.613 に答える