【问题标题】:UIButton: Need a circle hit areaUIButton:需要一个圆形点击区域
【发布时间】:2010-10-31 12:33:30
【问题描述】:

好的,我有 6 个自定义 UIButton。它们的正常状态图像都是圆形图像。 它们都等距分布,但所有圆圈都相互接触。

自定义 UI 按钮(上面有一个圆形图像)的问题是该按钮的点击区域是方形的,并且该方形的角与另一个自定义按钮的点击区域重叠。

我如何使正常状态具有圆形图像的 UIbutton 的点击区域,只能在该圆圈上点击,而不是正常的方形点击区域?!

我希望有人能为我找到一种方法来解决我目前遇到的这个问题!

提前致谢

帕万

【问题讨论】:

    标签: iphone uibutton geometry clickable-image


    【解决方案1】:

    如果单击“圆”的正方形区域,则应检查圆心与单击坐标之间的距离是否小于圆的半径。如果没有,那么“命中”可以忽略。

    【讨论】:

    • 首先,非常感谢您的快速响应,我现在真的在等待答案,因为我正在做一个项目!我马上试试这个。这说得通。好的,这样就可以处理圆圈了,那么像三角形这样的复杂形状呢?我有两个?差不多就是这样。
    • 哦,顺便说一句,当用户单击自定义按钮时,会触发声音。因此,使用您的建议,如果我检查坐标是否在圆圈内,并且碰巧用户不在圆圈内而是在命中区域内,因为它是 UIButton 它仍然会进入突出显示状态... ..那么我如何告诉程序忽略进入高亮状态?!提前致谢
    • @Pavan:关于三角形,检查坐标是否在三个顶点所描述的线内的数学代码,或者,也许更容易检查坐标是否在所描述的任何线之外两个顶点并在这种情况下忽略。这应该很简单 - 对于任何给定的坐标 x,您应该能够计算三角形边缘的预期 y 值,然后与点击的 y 值进行比较。我希望这是有道理的。
    • @Pavan:关于第二个问题——我对 UIButton 的了解还不够多,但我认为有一种方法可以捕获/挂钩单击事件(或触摸事件)。我将管理检查它是否在该区域中并控制该代码中的突出显示(来自 UIControl)的逻辑。只是猜测......
    • @Pavan 在按下按钮时调用的方法中,您可以输入[sender setHighlighted:false];,然后在它检查触摸是否在圆圈中之后,您可以使用相同的代码将其更改为是的。
    【解决方案2】:

    感谢输入demi,我基本上只是在图像顶部放置了隐藏按钮。它们不是真正的圆形,它们是更复杂的形状;因此我不关心数学的原因,所以我只是将隐藏按钮放在图像本身的顶部,并适当地覆盖这些命中区域,直到获得所需的命中区域覆盖。

    虽然不是很整洁,但效果很好! :D

    再次感谢demi的快速回复。

    【讨论】:

      【解决方案3】:

      OBShapedButton 是一个很棒的项目,它会给你一个按钮,它只会响应图像区域中的点击。我搞砸了一些说他们做同样事情的项目,而这个是我迄今为止见过的最好的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-22
        • 1970-01-01
        • 1970-01-01
        • 2015-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多