ios – Pellizcar / acercar de la escala actual

El siguiente código correctamente pellizca / amplía la vista del contenedor, pero solo después de que salte a una escala de 1.0. ¿Cómo puedo modificarlo para que la vista del contenedor se ajuste a su escala actual?

UIPinchGestureRecognizer *twoFingerPinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingerPinch:)]; [self.container addGestureRecognizer:twoFingerPinch]; - (void)twoFingerPinch:(UIPinchGestureRecognizer *)recognizer { _scale = recognizer.scale; CGAffineTransform tr = CGAffineTransformScale(self.view.transform, _scale, _scale); self.container.transform = tr; } 

En el file .h, agregue:

 CGFloat _lastScale; 

En el file .m,

 - (id)init { ... _lastScale = 1.0f; ... } - (void)twoFingerPinch:(UIPinchGestureRecognizer *)recognizer { if (recognizer.state == UIGestureRecognizerStateEnded) { _lastScale = 1.0f; return; } CGFloat scale = 1.0f - (_lastScale - recognizer.scale); CGAffineTransform tr = CGAffineTransformScale(self.view.transform, scale, scale); self.container.transform = tr; _lastScale = recognizer.scale; } 

Así es como lo hago:

 - (void)handlePinchGesture:(UIPinchGestureRecognizer *)recognizer { static float initialDifference = 0.0; static float oldScale = 1.0; if (recognizer.state == UIGestureRecognizerStateBegan){ initialDifference = oldScale - recognizer.scale; } CGFloat scale = oldScale - (oldScale - recognizer.scale) + initialDifference; myView.transform = CGAffineTransformScale(self.view.transform, scale, scale); oldScale = scale; }