获取UIPinchGestureRecognizer手指位置

6

我正在使用UIGestureRecognizer来转换一个视图,它完美地工作,但现在我想单独地使用它来转换我的视图宽度和高度。我能想到的解决方法是获取两个手指的位置,并制作一个if语句来识别用户是尝试增加宽度还是高度,但为此我需要获取涉及捏合手势的每个手指位置。但我找不到任何方法来做到这一点,我想知道这是否可能或者是否有其他实现这一目标的替代方法。

- (IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer {


        recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, 1);//To transform  height insted of width just swap positions of the second and third parameter. 
        NSLog(@"%f",recognizer.scale);
        recognizer.scale = 1;

}
1个回答

10

如果有人需要这样做,可以使用一个叫做“触摸位置”的方法。使用此方法,您可以获取每个触摸点的x和y位置。但是请在手势识别器状态开始时调用它,因为在状态更改时调用会导致程序崩溃。将这些值保存在某些变量中,然后您就可以使用它们了。希望对感兴趣的人有所帮助。

- (IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer {
 if(recognizer.state == UIGestureRecognizerStateBegan){
            NSLog(@"pos : 0%f, %f",[recognizer locationOfTouch:0 inView:self.view].x,[recognizer locationOfTouch:0 inView:self.view].y);
            NSLog(@"pos 1: %f, %f",[recognizer locationOfTouch:1 inView:self.view].x,[recognizer locationOfTouch:1 inView:self.view].y);
        }
        if(recognizer.state == UIGestureRecognizerStateChanged){
            recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, 1);
            //NSLog(@"%f",recognizer.scale);
            recognizer.scale = 1;
        }
        if(recognizer.state == UIGestureRecognizerStateEnded){

}       

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接