1

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

- (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 + (фактор-1), lastScaleFactor + (фактор-1)) ; } else { moveImageView.transform = CGAffineTransformMakeScale (коэффициент lastScaleFactor *, фактор lastScaleFactor *);

    } 

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

     }  
    } 

}

moveImageView является объектом UIImageView. Координаты x и y печатаются, но нам нужны также высота и ширина.

Это произведение отлично, я хочу найти текущую координату (x, y, ширина, высота) изображения после масштабирования (сжатия и большого) изображения. Кто-нибудь мне помогает.

Благодаря передовой :)

ответ

0

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

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

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

+0

спасибо ответив мне: но, пожалуйста, скажите мне, где я поставил этот код. – pinku

+0

@pinku, вы помещаете этот код в свой укороченный метод. т. е. как происходит пинч, если вы хотите точно это сделать ... –

+0

m положить это на ущипните метод; moveImageView = (UIImageView) отправитель; CAlayer * imgLayer = [moveImageView.layer presentationLayer]; – pinku

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

}

Смежные вопросы