我知道如何使用带alpha通道的背景图像创建一个带有不规则划分区域的UIButton
。但是使用这个解决方案,只有ignore-tap区域是透明的;水龙头区域由不透明区域组成。
我想要的是一个完全透明的UIButton
,带有不规则的水龙头区域。 (它触发按钮后面的动画。)
似乎有些额外的UILayer
可以使用一些命中测试,但我不太明白。建议欢迎。
这是我的解决方案。问题:我想要附加一个不规则形状的水龙头区域的UIImageView
(称之为基本视图)。该区域对应于图像中的某些内容,我们将其称为河流。它可能是一个非连接区域。
在Finder中,复制视图的图像,并使用您喜欢的图形应用程序使所有非河流像素透明。称之为掩码图像。
轻触基本视图时,检查蒙版图像中的相应像素是否透明。 (留给读者的解决方案;例子比比皆是。)
因此,掩模图像永远不会被实际渲染,它只是用作参考。
请注意,如果基本视图调整大小或移动(就像在我的应用程序中一样,通过设置其约束的动画),那么您也必须“移动”蒙版图像,或以其他方式管理视图和蒙版之间的坐标转换。最简单的方法是使蒙版图像成为基本视图的隐藏子视图,其左,顶部,前导和尾随锚点被约束为等于基本视图的锚点。然后他们一起移动,两者之间的协调翻译就是身份。
我将所有这些包装在UIImageView
的子类中,以便它管理自己的掩码,如果点击“河流”(或其他),则调用委托。