UIPinchGestureRecognizer中的最大/最小缩放比例 - iPhone iOS [英] Max/Min Scale of Pinch Zoom in UIPinchGestureRecognizer - iPhone iOS
问题描述
我如何将UIPinchGestureRecognizer的比例限制在最低和最高水平?下面的scale属性似乎是相对于上一个已知的比例(来自上一个状态的delta),我无法弄清楚如何设置对被缩放对象的大小/高度的限制。
How would I be able to limit the scale of the UIPinchGestureRecognizer to a min and max level? The scale property below seems to be relative to the last known scale (the delta from last state) and I can't figure out how to set a limit to the size/heigh of the object being zoomed.
-(void)scale:(id)sender {
[self.view bringSubviewToFront:[(UIPinchGestureRecognizer*)sender view]];
if([(UIPinchGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {
lastScale = 1.0;
return;
}
CGFloat pinchscale = [(UIPinchGestureRecognizer*)sender scale];
CGFloat scale = 1.0 - (lastScale - pinchscale);
CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform;
CGAffineTransform holderTransform = holderView.transform;
CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale);
[[(UIPinchGestureRecognizer*)sender view] setTransform:newTransform];
lastScale = [(UIPinchGestureRecognizer*)sender scale];
}
推荐答案
无法限制 UIPinchGestureRecognizer
的比例。要限制代码中的高度,您应该可以执行以下操作:
There isn't a way to limit the scale on a UIPinchGestureRecognizer
. To limit the height in your code, you should be able to do something like this:
CGFloat scale = 1.0 - (lastScale - pinchscale);
CGRect bounds = [(UIPinchGestureRecognizer*)sender view].bounds;
scale = MIN(scale, maximumHeight / CGRectGetHeight(bounds));
scale = MAX(scale, minimumHeight / CGRectGetHeight(bounds));
要限制宽度,请在最后两行中将高度更改为宽度。
To limit width, change 'Height' to 'Width' in the last two lines.
这篇关于UIPinchGestureRecognizer中的最大/最小缩放比例 - iPhone iOS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!