Вот мое решение. Проблема: A UIImageView
(назовите его базовый вид ), к которому я хочу прикрепить область крана неправильной формы. Область соответствует чему-то на изображении, давайте назовем это рекой. Это может быть неподключенная область.
В Finder продублируйте изображение вида и сделайте все пиксели нереального цвета прозрачными, используя ваше любимое графическое приложение. Назовите это маска изображения .
При касании базового вида проверьте, является ли соответствующий пиксель на изображении маски прозрачным или нет. (Решение оставлено читателю; примеров предостаточно.)
Таким образом, изображение маски фактически никогда не отображается, оно просто используется в качестве ссылки.
Обратите внимание, что если базовый вид изменяется или перемещается (как в моем приложении, с помощью анимации его ограничений), то вам также необходимо «переместить» изображение маски или каким-либо другим способом управлять перемещением координат между представлениями. и маска. Самый простой способ сделать это состоит в том, чтобы сделать изображение маски скрытым подпредставлением *1017* базового вида, при этом его левый, верхний, ведущий и задний якоря должны быть равны таковым базового вида. Затем они перемещаются вместе, и перевод координат между ними является тождеством.
Я обернул все это в подкласс UIImageView
, чтобы он управлял собственной маской и вызывал делегат, если нажата "река" (или что-то еще).