как получить координату пинчестера в iphone - PullRequest
1 голос
/ 08 августа 2011

Я работаю над UIPinchGesture, он работает нормально.Я хочу найти координаты изображения (x, y, ширина, высота) при уменьшении и увеличении каждый раз.Мой код:

- (IBAction) handlePinchGesture: (UIGestureRecognizer *) sender {

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, ширину, высоту) изображения после масштабирования (Уменьшается и большое изображение).Любой, помогите мне, плз как можно скорее.

Спасибо заранее:)

Ответы [ 2 ]

1 голос
/ 09 августа 2011

- (IBAction) handlePinchGesture: (UIGestureRecognizer *) sender {

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);

}

0 голосов
/ 08 августа 2011

Если вам нужно точное состояние UIImageView в любом точном состоянии даже во время анимации, вам необходимо получить доступ к слою презентации.Поскольку слой модели не обновляется во время анимации.Это можно сделать следующим образом -

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

В этом imgLayer есть точные координаты, которые вам нужны.в том числе размер (ширина, высота).

...