0

我试图通过UIPinchGestureRecognizer但是捏图像,问题是我的代码无法正常工作,实际上它无法缩放我的图像

-(void) pinching: (UIPinchGestureRecognizer *) sender {

    CGAffineTransform myTransformation =
    CGAffineTransformMakeScale(sender.scale, sender.scale);
    sender.view.transform = myTransformation;
}


- (void)viewDidLoad
{
  UIPinchGestureRecognizer *pinch =
    [[UIPinchGestureRecognizer alloc]
     initWithTarget:self
     action:@selector(pinching:)];

    pinch.delegate = self;

    [imageBG addGestureRecognizer:pinch];

    [imageBG setUserInteractionEnabled:YES];
    [imageBG setMultipleTouchEnabled:YES];
}
4

3 回答 3

1

尝试使用UIScrollView.

为此,创建它

self.scrollView = [[UIScrollView alloc] initWithFrame:...];
self.scrollView.delegate = self;
self.scrollView.maximumZoomScale = 2.0; // adjust as you need
self.scrollView.minimumZoomScale = 0.5; // adjust as you need
[self.scrollView addSubview:self.imageView];

并添加委托方法:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return self.imageView;
}
于 2012-12-24T13:00:26.673 回答
1

只需在.h文件中取一个变量,如下所示..

CGFloat lastScale;

并使用这种类型的代码...

viewWillAppear:方法中添加它..

- (void)viewWillAppear:(BOOL)animated
{
     UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)];
        [pinchRecognizer setDelegate:self];
        [yourImageView addGestureRecognizer:pinchRecognizer];
}

-(void)scale:(id)sender {
    if([(UIPinchGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {

            lastScale = 1.0;
            return;
        }

        CGFloat scale = 1.0 - (lastScale - [(UIPinchGestureRecognizer*)sender scale]);

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

        [[(UIPinchGestureRecognizer*)sender view] setTransform:newTransform];
        yourImageView.transform = newTransform

        lastScale = [(UIPinchGestureRecognizer*)sender scale];
}

也试试这个代码..

于 2012-12-24T13:00:36.213 回答
-1

您需要添加一个滚动视图以启用缩放。将您的 imageView 添加为滚动视图的子视图。将委托设置为UIScrollViewDelegate自己。实现委托方法。

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

{
    //return the imageview here
    return self.imageView;

}

在此处缩放您的图像视图:

- (CGRect)zoomRectForScrollView:(UIScrollView *)scrollView withScale:(float)scale withCenter:(CGPoint)center

你可以参考Apple 的这个例子

于 2012-12-24T13:05:18.377 回答