0

画像ビューがあり、カスタムのピンチ ジェスチャ レコグナイザーを追加したいと考えています。画像ビューをズームできますが、問題は、2 本の指の中心からズームインしていないことです。

2 本の指の中心からズームするにはどうすればよいですか? これは私が現在行っていることです(でviewDidLoad

UIPinchGestureRecognizer* pinchRecognizer = 
    [[UIPinchGestureRecognizer alloc] initWithTarget:self
                                              action:@selector(handlePinch:)];    
 [imageView addGestureRecognizer:pinchRecognizer]; 

これがピンチメソッドのコードです

- (IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer
{  

    recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
    recognizer.scale = 1;

}

担当者に感謝します...今ここで質問を更新しています..ボタンをクリックして画像をズームしたい..私がやっていることは

-(IBAction)Zoom_image:(id)送信者 {

 CGFloat scaleValue = 2;

 CGAffineTransform transform = GAffineTransformMakeScale(scaleValue,scaleValue);

 self.backgroundImgView.transform = transform;

}

4

2 に答える 2

5

これも機能します。画像をピンチの中心に移動し、拡大縮小してから、1 回の変換で元の位置に戻すだけです。

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

    CGPoint anchor = [recognizer locationInView:imageToScale];
    anchor = CGPointMake(anchor.x - imageToScale.bounds.size.width/2, anchor.y-imageToScale.bounds.size.height/2);

    CGAffineTransform affineMatrix = imageToScale.transform;
    affineMatrix = CGAffineTransformTranslate(affineMatrix, anchor.x, anchor.y);
    affineMatrix = CGAffineTransformScale(affineMatrix, [recognizer scale], [recognizer scale]);
    affineMatrix = CGAffineTransformTranslate(affineMatrix, -anchor.x, -anchor.y);
    imageToScale.transform = affineMatrix;

    [recognizer setScale:1];
}
于 2013-04-23T15:18:35.287 に答える