具有圆角的UIButton允许在角落中进行交互

时间:2014-03-27 13:35:19

标签: ios objective-c uibutton

我有一个我在Interface Builder中创建的按钮。我也在Interface Builder中设置了它的角半径和maskToBounds:

Runtime Attributes

基本上这些设置使按钮变圆。这会正确剪辑我的按钮;然而,角落仍然是互动的。

如何让交互保持在图层内?

以下是我的按钮的屏幕截图:

Button Screenshot

我的按钮是红色圆圈。我在它背后放了一个浅灰色的UIView来显示它仍然响应触摸的区域。

2 个答案:

答案 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作为按钮的背景。

创建一个圆形图像,其中包含一组作为背景的透明内容,这对我有用。