限制在iOS中使用缩放手势缩放图像的最大缩放比例
我目前能够使用Apple提供的缩放手势识别器缩放图像缩放比例,但是如何限制图像的最大缩放比例?限制在iOS中使用缩放手势缩放图像的最大缩放比例
我一直在使用Apple的SimpleGestureRecognizers sample,它将scale设置为1,并且使得缩放图像变得非常容易,但是当我删除它时,它会突然跳跃,这并不好。但是,自始终设置为1以来很难追踪比例。
在此先感谢您。
的UIKit会打电话给你的选择方法,多次为单个用户手势(捏)。每个电话都代表着规模小的增量(或减少)。如果您处理每个方法的调用,并为每个小增量相应地缩放图像,您将获得平滑的动画。
您使用识别器的scale属性来修改图像。然后,将该属性重置为1.0,以便下次调用选择器方法时,scale属性仅表示自上一次以来的新增小增量。您再次通过新的小增量重新缩放图像,并重置为1.0。如果您不重置识别器的比例尺并使用它重新缩放图像,则会通过累积更改来缩放图像,导致跳动行为(并且缩放比例不正确)。
因此,请确保将手势识别器的比例重置为1.要跟踪比例的总变化,可以为您的UIImageView或ViewController创建一个实例变量,也可能称为“比例”。 (事实上,如果您在drawRect中使用了新的缩放比例变量来绘制图片,则只需在setter中添加对setNeedsDisplay的调用即可,并且在缩放比例更改时不必编写任何代码来重新绘制图片。)
在任何情况下,下面的代码(包含猎食的限度检查,但在新的规模变量)应该为你的选择方法的工作:
- (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;
}
}
我希望这是有帮助的。
在选择器方法gestureRecognizer
检查scale
sender
(UIPinchGestureRecognizer
)的属性如果它小于你想要缩放,对图像应用缩放否则不要。例如,下面的方法是selector
然后是pinchGesture
。
-(void)pinchAction:(UIPinchGestureRecognizer *)sender
{
if(sender.scale<yourScaleLimit)
{
//scale up the image
}
}
感谢,
scale是两个pinchAction调用之间的相对值,在每次pinchAction调用后设置为1。所以它不是你的原始视图尺寸和你当前的视图尺寸之间的绝对关系 – Seega 2011-04-13 09:49:21
在这里,imageView不支持.scale属性。这个错误的任何替代方法? – Hemang 2012-10-01 12:45:55
@Hemang:注意上面的第三段。 'imageView.scale'是指您在UIImageView子类中创建的实例变量,用于跟踪累积的比例变化。或者,您可以在视图控制器中创建一个实例变量,然后将其称为“self.imageViewScale”。无论哪种方式,您都需要一个新变量来跟踪规模的累积变化。 – 2012-10-03 07:38:19
感谢您的帮助。我错过了阅读第3段的那部分内容。所以我犯了一个错误。谢谢。代码工作正常。 – Hemang 2012-10-06 12:21:58