我有一个我在Interface Builder中创建的按钮。我也在Interface Builder中设置了它的角半径和maskToBounds:
基本上这些设置使按钮变圆。这会正确剪辑我的按钮;然而,角落仍然是互动的。
如何让交互保持在图层内?
以下是我的按钮的屏幕截图:
我的按钮是红色圆圈。我在它背后放了一个浅灰色的UIView来显示它仍然响应触摸的区域。
答案 0 :(得分:0)
你可以继承UIButton;
在– (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
中检查触摸点是否在我们感兴趣的区域内,否则返回nil。 有关此内容的更多信息,请访问:http://www.planet1107.net/blog/custom-shape-uibutton-tutorial/
或者......更简单..使用此https://github.com/ole/OBShapedButton
更新 - 使用@ jancakes的说明:
*关于github项目的一个注意事项:该按钮仅响应图像中非透明部分的触摸,因此如果图像在很大程度上依赖于内部的透明度,那么本教程中的实现是更有用的方法
答案 1 :(得分:-1)
问题在于,当您使用属性backgroundColor
时,这就是行为。
为避免这种情况,只需使用UIImage
作为按钮的背景。
创建一个圆形图像,其中包含一组作为背景的透明内容,这对我有用。