Полностью прозрачная кнопка UIB с нерегулярной областью попадания - PullRequest
0 голосов
/ 14 марта 2019

Я знаю, как использовать фоновое изображение с альфа-каналом для создания UIButton с нерегулярной областью касания. Но с этим решением, только область игнорирования - прозрачна; область касания состоит из непрозрачного .

Мне нужен полностью прозрачный UIButton, с нерегулярной областью крана. (Это вызывает анимацию за кнопкой.)

Кажется, что какой-то дополнительный UILayer с некоторым тестированием хитов может сработать, но я не совсем понимаю, как. Предложения приветствуются.

1 Ответ

0 голосов
/ 15 марта 2019

Вот мое решение. Проблема: A UIImageView (назовите его базовый вид ), к которому я хочу прикрепить область крана неправильной формы. Область соответствует чему-то на изображении, давайте назовем это рекой. Это может быть неподключенная область.

В Finder продублируйте изображение вида и сделайте все пиксели нереального цвета прозрачными, используя ваше любимое графическое приложение. Назовите это маска изображения .

При касании базового вида проверьте, является ли соответствующий пиксель на изображении маски прозрачным или нет. (Решение оставлено читателю; примеров предостаточно.)

Таким образом, изображение маски фактически никогда не отображается, оно просто используется в качестве ссылки.

Обратите внимание, что если базовый вид изменяется или перемещается (как в моем приложении, с помощью анимации его ограничений), то вам также необходимо «переместить» изображение маски или каким-либо другим способом управлять перемещением координат между представлениями. и маска. Самый простой способ сделать это состоит в том, чтобы сделать изображение маски скрытым подпредставлением *1017* базового вида, при этом его левый, верхний, ведущий и задний якоря должны быть равны таковым базового вида. Затем они перемещаются вместе, и перевод координат между ними является тождеством.

Я обернул все это в подкласс UIImageView, чтобы он управлял собственной маской и вызывал делегат, если нажата "река" (или что-то еще).

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