我知道如何使用带有Alpha通道的背景图像来创建具有不规则点击区域的UIButton
。但是通过这种解决方案,只有忽略点击区域是透明的;点击区域由不透明组成。
我想要的是一个完全透明的UIButton
,具有不规则的点击区域。 (它会在按钮后面触发动画。)
似乎有些额外的UILayer
可以进行命中测试,但是我不太清楚如何。欢迎提出建议。
答案 0 :(得分:0)
这是我的解决方案。问题:我想在其上附加一个不规则形状的抽头区域的UIImageView
(称为基本视图)。该区域与图像中的某物相对应,我们称它为河。可能是非连接区域。
在Finder中,使用您喜欢的图形应用程序复制视图的图像,并使所有非河流像素透明。将此称为蒙版图像。
在点击基本视图时,请检查遮罩图像中的相应像素是否透明。 (解决方案留给读者;示例比比皆是。)
因此,遮罩图像从未真正渲染过,仅用作参考。
请注意,如果调整了基本视图的大小或对其进行了移动(就像在我的应用程序中那样,通过设置其动画效果来限制其移动),那么您也必须“移动”蒙版图像,或者以其他方式管理视图之间的坐标平移和面具。最简单的方法是使遮罩图像成为基本视图的 hidden 子视图,其左,顶部,前导和尾随锚被限制为与基本视图相同。然后他们一起走来走去,两者之间的坐标转换就是身份。
我将所有这些都包装在UIImageView
的子类中,以便它管理自己的掩码,并在点击“河流”(或其他任何内容)时调用委托。