1

I am working on customizing images. My requirement is to stretch or shrink image in touch direction & cropping image. I have done cropping but how I can stretch & shrink image in touch direction. Is it possible?

Maksim
  • 2,054
  • 3
  • 17
  • 33

1 Answers1

6

Your question in not clear.but if you want to scale or rotate image with touch event.then in viewdidload write this code.

UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc]
initWithTarget:self action:@selector(rotateImage:)];
[self.view addGestureRecognizer:rotationGesture];
UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] 
 initWithTarget:self action:@selector(scaleImage:)];
[self.view addGestureRecognizer:pinchGesture];
 [pinchGesture release];

And using this code you can rotate or scale images in touch direction.

 - (void)scaleImage:(UIPinchGestureRecognizer *)recognizer
{
if([recognizer state] == UIGestureRecognizerStateEnded) {
    previousScale = 1.0;
    return;
}
 CGFloat newScale = 1.0 - (previousScale - [recognizer scale]);
 CGAffineTransform currentTransformation = yourimage.transform;
 CGAffineTransform newTransform = CGAffineTransformScale(currentTransformation,
 newScale, newScale);
    yourimage.transform = newTransform;
    previousScale = [recognizer scale];
 }


- (void)rotateImage:(UIRotationGestureRecognizer *)recognizer
 {

 if([recognizer state] == UIGestureRecognizerStateEnded) {

    previousRotation = 0.0;
    return;
 }

 CGFloat newRotation = 0.0 - (previousRotation - [recognizer rotation]);
 CGAffineTransform currentTransformation = yourimage.transform;
 CGAffineTransform newTransform = CGAffineTransformRotate(currentTransformation, newRotation);
 yourimage.transform = newTransform;
 previousRotation = [recognizer rotation];

 }
jamil
  • 2,419
  • 3
  • 37
  • 64
  • Please note that you need to `release` your gestures like this `[pinchGesture release]` after you add them to the `view` to prevent memory leaks. You can use the `autorelease` property on creation as another solution. Maybe you would like to **Edit** your answer to reflect that. Finally I think your answer is correct therefore I raised it but I hope to hear from @Gagan Misra who asked the question. – antf May 26 '12 at 22:59