У меня есть изображение, показанное в представлении uiimage. Если я коснусь какого-либо места на экране, есть ли способ узнать, какая точка на изображении затронута. я хочу взять координаты изображения, а не координаты экрана. Я хочу сделать это без использования какой-либо сторонней библиотеки. Подскажите, есть ли способы.
Преобразование точки экрана в точку изображения
Ответы (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);
}
}
Как только вы получите относительные координаты из события касания UIImageView (и я предполагаю, что вы используете UIImageView и устанавливаете его свойство Image для изображения). Затем вы можете использовать 1/UIImageView.image.scale для умножения на относительные координаты касания и получения абсолютных координат для этого изображения.
В основном ваше исходное изображение искажается или масштабируется в зависимости от размера UIImageView, поэтому вам нужно сделать его наоборот.
Подобный вопрос уже задавали и ответили. Некоторые из них указали здесь, чтобы помочь кому-то в будущем.
- https://stackoverflow.com/a/10212280/4140018
- https://stackoverflow.com/a/17200285/4140018
- http://b2cloud.com.au/tutorial/uiimageview-transforming-touch-coordinates-to-pixel-coordinates/
Чтобы преобразовать точку из одного вида в другой, вы можете использовать методы convertPoint:fromView:
и convertPoint:toView:
.