1

我正在研究 UIPinchGesture 它的工作正常。我想在每次缩小和放大时找到图像(x,y,宽度,高度)的坐标。我的代码是:

-(IBAction)handlePinchGesture:(UIGestureRecognizer *)发件人{

CGFloat factor = [(UIPinchGestureRecognizer *) sender scale];
CGPoint point = [sender locationInView:self.moveImageView];
NSLog(@"The Coordinate is:--->  x = %f y = %f", point.x, point.y);
if (factor > 1) {

moveImageView.transform = CGAffineTransformMakeScale(lastScaleFactor + (factor-1), lastScaleFactor + (factor-1)); } else { moveImageView.transform = CGAffineTransformMakeScale(lastScaleFactor * factor, lastScaleFactor * factor);

                    }

if (sender.state == UIGestureRecognizerStateEnded){
    if (factor > 1) {
        lastScaleFactor += (factor-1);
    } else {
        lastScaleFactor *= factor;

        }       
    }   

}

moveImageView 是 UIIMageView 的对象。打印 x 和 y 的坐标,但我们还需要高度和宽度。

这很好,我想在图像缩放(缩小和放大)后找到图像的当前坐标(x,y,宽度,高度)。任何人都请尽快帮助我。

先谢谢了:)

4

2 回答 2

1

-(IBAction)handlePinchGesture:(UIGestureRecognizer *)发件人{

NSLog(@"image.frame.sizeWidth111 %f",moveImageView.frame.size.width);
NSLog(@"image.frame.sizeHeight111 %f",moveImageView.frame.size.height);

CGFloat factor = [(UIPinchGestureRecognizer *) sender scale];
CGPoint point = [sender locationInView:self.moveImageView];

NSLog(@"The Coordinate is:--->  x = %f y = %f", point.x, point.y);

//如果当前因子大于 1 --> 放大

if (factor > 1) {
                moveImageView.transform = CGAffineTransformMakeScale(lastScaleFactor + (factor-1),
                                                     lastScaleFactor + (factor-1));
                } else {
                    moveImageView.transform = CGAffineTransformMakeScale(lastScaleFactor * factor, 
                                                     lastScaleFactor * factor);

                    }

if (sender.state == UIGestureRecognizerStateEnded){
    if (factor > 1) {
        lastScaleFactor += (factor-1);
    } else {
        lastScaleFactor *= factor;

        }       
    }   
NSLog(@"image.frame.sizeWidth222 %f",moveImageView.frame.size.width);
NSLog(@"image.frame.sizeHeight222 %f",moveImageView.frame.size.height);

}

于 2011-08-09T05:22:00.983 回答
0

如果UIImageView即使在动画期间您也需要在任何确切状态下的确切状态,那么您需要访问表示层。由于模型层在动画期间未更新。这可以像这样完成 -

UIImageView *i    = (UIImageView *)sender;
CAlayer *imgLayer = [i.layer presentationLayer];

imgLayer有确切的坐标,你需要。包括尺寸(宽度、高度)。

于 2011-08-08T12:20:12.223 回答