完全透明的UIButton,具有不规则的击中区域

问题描述 投票:0回答:1

我知道如何使用带alpha通道的背景图像创建一个带有不规则划分区域的UIButton。但是使用这个解决方案,只有ignore-tap区域是透明的;水龙头区域由不透明区域组成。

我想要的是一个完全透明的UIButton,带有不规则的水龙头区域。 (它触发按钮后面的动画。)

似乎有些额外的UILayer可以使用一些命中测试,但我不太明白。建议欢迎。

uibutton hittest alpha-transparency
1个回答
0
投票

这是我的解决方案。问题:我想要附加一个不规则形状的水龙头区域的UIImageView(称之为基本视图)。该区域对应于图像中的某些内容,我们将其称为河流。它可能是一个非连接区域。

在Finder中,复制视图的图像,并使用您喜欢的图形应用程序使所有非河流像素透明。称之为掩码图像。

轻触基本视图时,检查蒙版图像中的相应像素是否透明。 (留给读者的解决方案;例子比比皆是。)

因此,掩模图像永远不会被实际渲染,它只是用作参考。

请注意,如果基本视图调整大小或移动(就像在我的应用程序中一样,通过设置其约束的动画),那么您也必须“移动”蒙版图像,或以其他方式管理视图和蒙版之间的坐标转换。最简单的方法是使蒙版图像成为基本视图的隐藏子视图,其左,顶部,前导和尾随锚点被约束为等于基本视图的锚点。然后他们一起移动,两者之间的协调翻译就是身份。

我将所有这些包装在UIImageView的子类中,以便它管理自己的掩码,如果点击“河流”(或其他),则调用委托。

© www.soinside.com 2019 - 2024. All rights reserved.