捏合手势缩放仅从左上角缩放UIImage

时间:2014-05-15 16:23:58

标签: ios7 uiview xcode5 pinchzoom uipinchgesturerecognizer

我对此很新,我正在尝试使用捏合手势放大UIImage,并能够放大图像的任何特定部分。但是,当我缩放它时,它只会从UIView的左上角缩放。所以我只能看到图像的左上角放大了。我希望能够缩放/平移图像,类似于照片应用程序的工作方式。到目前为止,这是我的代码:

在ViewDidLoad中:

...
 // Load the image to be viewed into the UIImage
self.theImage.image = self.theNewImage;

UIPinchGestureRecognizer *pinchGestRecog = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingerPinch:)];

// ADD GESTURE RECOGNIZER TO THE VIEW
[theImage addGestureRecognizer:pinchGestRecog];

// ALLOW USER INTERACTION ON THE VIEW
[theImage setUserInteractionEnabled:YES];

// SET IMAGE ZOOM SCALE LIMITS
imageCurrentScale = 1.0;
imageMaxScale = 2.0;
imageMinScale = 0.5;

然后在我的twoFingerPinch方法中:

 - (void)twoFingerPinch:(UIPinchGestureRecognizer *)aPinchGesture
{
if (imageCurrentScale * [aPinchGesture scale] > imageMinScale && imageCurrentScale * [aPinchGesture scale] < imageMaxScale) {

    imageCurrentScale = imageCurrentScale * [aPinchGesture scale];
    CGAffineTransform zoomTransform = CGAffineTransformMakeScale(imageCurrentScale, imageCurrentScale);
    [[aPinchGesture view] setTransform:zoomTransform];
}
[aPinchGesture setScale:1.0];

}

以某种方式平移答案?我不太确定平移是如何工作的。 有什么建议?感谢。

1 个答案:

答案 0 :(得分:0)

缩放到左上角的原因是缩放转换的中心是UIView.layer.anchorPoint,默认为左上角(0,0)。 如果你想要正确缩放,你必须弄清楚你的捏手势的中心,然后将你的anchorPoint设置到那个位置。

但你无论如何也不应该这样做。放大UIImageView的推荐方法是将图片视图放入UIScrollView,并相应地设置contentSizemaximumZoomScaleminimumZoomScale值。 将自己设置为UIScrollView的代理人,并在UIImageView委托方法中返回viewForZooming

scrollview将为您处理捏合和缩放。