После поворота в UIImageView, как мне проверить, находится ли точка касания в области UIImageView? - PullRequest
0 голосов
/ 06 декабря 2011

Я попытался проверить CGRect:

 CGFloat imageX1 = imageView.frame.origin.x;
 CGFloat imageY1 = imageView.frame.origin.y;
 CGFloat imageX2 = imageView.frame.origin.x + imageView.frame.size.width;
 CGFloat imageY2 = imageView.frame.origin.y + imageView.frame.size.height;

 //NSLog(@"(%f, %f) - (%f, %f)", imageX1, imageY1, imageX2, imageY2); 
 if(imageX1 < touchedX && touchedX < imageX2 && 
     imageY1 < touchedY && touchedY < imageY2){ }

И затем я знаю, что этот тип проверки работает только тогда, когда UIImageView не был повернут / масштабирован.

Я пытался CGRectApplyAffineTransform(imageView.frame, imageView.transform);, но создает наименьший прямоугольник для преобразованного UIImageView.

Допустим, у вас UIImageView повернут на 45 градусов и масштабирован до 1,5.Теперь, когда вы касаетесь пары пикселей за пределами UIImageView, он все равно считает, что точка касания находится внутри UIImageView Rect, но это не так.UIImageView поворачивается и масштабируется, но CGRect все еще является исходным.

Кто-нибудь знает, как с этим бороться?Я довольно новичок в графике.Все поможет.Спасибо!

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011

попробуйте

CGPoint touchLocation = [touch locationInView:self];
 if (CGRectContainsPoint(myImageView.frame, touchLocation))
0 голосов
/ 07 декабря 2011

Я отвечаю на свой вопрос.

Я переместил событие прикосновения в пользовательский класс ImageView, имея ссылку на родительский UIView.

Это решило проблему.

Спасибо Ankit за подсказку!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...