iphone - применить CGAffineTransformRotate к точке в хит-тесте - PullRequest
1 голос
/ 25 марта 2012

У меня есть изображение, которое может поворачиваться и масштабироваться пользователем.Каждый раз, когда пользователь щелкает изображение, я пытаюсь выяснить, является ли точка прозрачной или нет.

Если она прозрачная, я возвращаю нуль в HitTest моего представления, если она не прозрачная, я возвращаю представление.Проблемы начинаются, когда пользователь поворачивает изображение.В моем методе hitTest мне нужно преобразовать точку в соответствии с поворотом текущего вида.В противном случае точка будет указывать на несоответствующее местоположение на виде (и на изображении).

Как мне это сделать?

Большое спасибо.

1 Ответ

2 голосов
/ 26 марта 2012

Это CGAffineTransform Reference может помочь:

CGPointApplyAffineTransform

CGRectApplyAffineTransform

и

CGSizeApplyAffineTransform

Но перед тем, как вы начнете думать, что вам нужно выполнить сопоставление вручную, я бы предложил попробовать, как если бы текущее преобразование было CGAffineIdentity, и соответствующим образом кодировать обнаружение координат. Вы можете быть удивлены результатами ...

Мой собственный опыт говорит, что, когда вы получаете свои очки от UITouch locationIn_SomeView_, похоже, что инвертированная матрица SomeView применяется к точке, прежде чем она будет возвращена вам.

Итак, вам, вероятно, не понадобится какой-либо из CGxxxApplyAffineTransform, если вы сами не сгенерируете точки вне системы событий.

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