PinthToZoom and Pan of UIView with multiple images

516 Views Asked by At

I'm developing an iphone application with an UIView that have an image as a background and multiple buttons with image as background. The image is an image of a country and the buttons are the regions/states of that country.

The problem is that the screen is too much little to display all this data, so I want to enable pinch-to-zoom of the UIView which allows user to have a better view of the country.

Inside 'viewDiDLoad' of my UIViewController, I added:

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

[[self view] addGestureRecognizer:twoFingerPinch];

and I added twoFingerPinch method:

- (void)twoFingerPinch:(UIPinchGestureRecognizer *)recognizer {
   if (recognizer.scale > minValue){
      CGAffineTransform transform = CGAffineTransformMakeScale(recognizer.scale, recognizer.scale);
      self.view.transform = transform;
   }
}

and it work correctly, the problem is that the UIView becomes bigger but user can't navigate inside.

So I switched my UIView to a UIScrollView and inside 'twoFingerPinch' method I added:

if (recognizer.state == UIGestureRecognizerStateEnded){

    float scaleForView = mLastScale;

    UIScrollView *tempScrollView=(UIScrollView *)self.view;

    int newWidth = self.view.frame.size.width * scaleForView;
    int newHeight = self.view.frame.size.height * scaleForView;

    tempScrollView.contentSize=CGSizeMake(newWidth,newHeight);

    mLastScale = 1.0;
}

but it doesn't work well: the UISrollView becomes much bigger but it's not bigger as the image scaled and also is not centered where pinchToZoom started.

How can i solve this problem?

Thank You

0

There are 0 best solutions below