[英]How to Zoom in/out an UIView based on Pan gesture?
我想基于UIPanGesture
放大/缩小UIView
。 我不知道如何将translationInView
为Scaling参数。 (我知道如何根据捏合手势放大/缩小)。
我正在试图弄清楚如何做到这一点,但到目前为止还没有这样的运气。
要进行缩放,您需要UIPinchGestureRecognizer,而不是Pan
- (IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer {
recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
recognizer.scale = 1;
}
另请查看此链接。
更新:
从UIPanGestureRecognizer接收触摸信息的唯一方法是
- (NSUInteger)numberOfTouches;
- (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(UIView*)view;
所以也许你可以尝试这样的事情:
CGFloat old_distance = 0.0; // keep it somewhere between touches!
- (void)panGestureRecognized:(UIPanGestureRecognizer *)recognizer {
if (recognizer.numberOfTouches == 2) {
CGPoint a = [recognizer locationOfTouch:0 inView:recognizer.view];
CGPoint b = [recognizer locationOfTouch:1 inView:recognizer.view];
CGFloat xDist = (a.x - b.x);
CGFloat yDist = (a.y - b.y);
CGFloat distance = sqrt((xDist * xDist) + (yDist * yDist));
CGFloat scale = 1;
if (old_distance != 0) {
scale = distance / old_distance;
}
old_distance = distance;
recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, scale, scale);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.