5

我使用 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;

}
4

1 回答 1

9

如果有人需要这样做,得到答案,有一种方法称为触摸位置。使用这种方法,您可以获得每个触摸的 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){

}       
于 2013-07-15T16:06:21.533 回答