限制在iOS中使用缩放手势缩放图像的最大比例

目前我可以通过使用苹果公司提供的捏手势识别器来进行图像缩放,但是如何限制图像的最大比例?

我一直在使用Apple的SimpleGestureRecognizers示例 ,它将scale设置为1,并且使得缩放图像变得非常容易,但是当我将其移除时,它会突然跳跃,这并不好。 但是自从它一直被设定为1以来,很难追踪这个规模。

先谢谢你。

UIKit将多次调用您的select器方法,以获取单个用户手势(捏)。每次调用都会在缩放中performance出一个小的增量(或减less)。 如果你处理每个调用方法,并相应地缩放你的图像为每个小增量,你会得到一个stream畅的animation。

您使用识别器的缩放属性来修改图像。 然后,将属性重置为1.0,以便下一次调用select器方法时,scale属性仅表示自上一次以来的新增小增量。 您再次通过新的小增量重新缩放图像,并重置为1.0。 如果您不重置识别器的缩放比例并使用它来重新缩放图像,则会通过累积更改来缩放图像,从而导致跳跃行为(并且缩放比例不正确)。

因此,请确保将手势识别器的比例重置为1.要跟踪比例的总体变化,可以为您的UIImageView或您的ViewController创build一个实例variables,也可能称为“比例”。 (实际上,如果在drawRect中使用了新的scalevariables来绘制图像,则只需要在setter中添加对setNeedsDisplay的调用,并且在缩放更改时不必编写任何代码来重绘图像。)

在任何情况下,下面的代码(包含Ravin的限制检查,但在新的尺度variables上)应该适用于你的select器方法:

- (void)pinch:(UIPinchGestureRecognizer *)recognizer { if (recognizer.state == UIGestureRecognizerStateChanged || recognizer.state == UIGestureRecognizerStateEnded) { if (imageView.scale < yourScaleLimit) { imageView.scale *= recognizer.scale; //any other code to scale up the image if //just changing imageView.Scale is not enough } recognizer.scale = 1.0; } } 

我希望这是有帮助的。

gestureRecognizerselect器方法中,如果senderUIPinchGestureRecognizer )的scale属性小于您想要缩放的比例,请检查scale属性,否则,请在图像上应用缩放比例。 例如下面的方法是selector pinchGesture然后。

 -(void)pinchAction:(UIPinchGestureRecognizer *)sender { if(sender.scale<yourScaleLimit) { //scale up the image } } 

谢谢,