Преобразование точки экрана в точку изображения

У меня есть изображение, показанное в представлении uiimage. Если я коснусь какого-либо места на экране, есть ли способ узнать, какая точка на изображении затронута. я хочу взять координаты изображения, а не координаты экрана. Я хочу сделать это без использования какой-либо сторонней библиотеки. Подскажите, есть ли способы.


person Shruthi    schedule 23.08.2013    source источник


Ответы (4)


попробуйте так, важное примечание установлено userInteractionEnable=YES для просмотра изображения, по умолчанию для взаимодействия с пользователем установлено значение НЕТ для просмотра изображения.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [[event allTouches] anyObject];
    if([[touch view] isKindOfClass:[UIImageView  class]]){
        CGPoint point= [touch locationInView:touch.view];
        NSLog(@"%f%f",point.x,point.y);
    }

}
person Balu    schedule 23.08.2013
comment
XCode6.1 предположил, что это userInteractionEnabled, а не userInteractionEnable - person stephendwolff; 02.03.2015

Как только вы получите относительные координаты из события касания UIImageView (и я предполагаю, что вы используете UIImageView и устанавливаете его свойство Image для изображения). Затем вы можете использовать 1/UIImageView.image.scale для умножения на относительные координаты касания и получения абсолютных координат для этого изображения.

В основном ваше исходное изображение искажается или масштабируется в зависимости от размера UIImageView, поэтому вам нужно сделать его наоборот.

person TorukMakto    schedule 23.08.2013
comment
у меня есть прокрутка, связанная с изображением. Когда я масштабирую / прокручиваю, вышеуказанная логика не будет работать... - person Shruthi; 26.08.2013
comment
У меня есть прокрутка, над которой я разместил изображение. Я рисую линии над этим изображением. Мне нужно отправить координаты линии относительно исходного изображения (не координаты касания изображения) на сервер. Я использовал прокрутку, чтобы увеличить изображение. - person Shruthi; 27.08.2013
comment
@Shruthi — используйте свойство zoomScale UIScrollView вместе со свойством масштаба UIImage.image. Сочетание двух должно дать вам правильный результат. Если ответ полезен для вас, пожалуйста, проголосуйте за него или примите его, чтобы он мог быть полезен и другим в будущем... - person TorukMakto; 27.08.2013

Подобный вопрос уже задавали и ответили. Некоторые из них указали здесь, чтобы помочь кому-то в будущем.

  1. https://stackoverflow.com/a/10212280/4140018
  2. https://stackoverflow.com/a/17200285/4140018
  3. http://b2cloud.com.au/tutorial/uiimageview-transforming-touch-coordinates-to-pixel-coordinates/
person Vineeth Joseph    schedule 21.08.2015

Чтобы преобразовать точку из одного вида в другой, вы можете использовать методы convertPoint:fromView: и convertPoint:toView:.

person Prasad G    schedule 23.08.2013
comment
Извините, мне не нужна точка в изображении. Мне нужны координаты в файле изображения. - person Shruthi; 23.08.2013