如何获得non-rectangular形按钮?

How to get non-rectangular shaped button?

如何获得 non-rectangular 形状的按钮?

我有一个带面具的UIImage。如何在没有透明颜色的情况下将按钮的形状设置为该图像。

I have a UIImage with a mask. How can I set the shape of a button to this image without the transparent color.

按钮是控件,控件是视图,而视图本质上是矩形的,所以按钮在视图层次结构中总是占据一个矩形space。但是,视图的可见部分(以及按钮)可以是您想要的任何东西……视图可以具有透明背景,并且可以根据自己的喜好绘制自己。视图还可以选择假装触摸事件没有击中它,可能使视图看起来 具有非矩形形状以传递触摸。您可以通过覆盖 hitTest(_:with:).

来做到这一点

另外,请注意您并不总是需要使用按钮来与屏幕上的对象进行交互。例如,如果你有一张房子的图像,并且你希望用户能够点击房子的不同部分来改变它的颜色或纹理,你可以在一个知道房子的不同部分在哪里的视图中显示房子在图像中。您可以使用手势识别器或正常的触摸处理机制让用户与不同区域进行交互,这些区域可以是您喜欢的任何形状。