xCode中的自定义圆形按钮

时间:2015-02-28 09:13:59

标签: ios swift

所以我在xCode中创建了一个带有圆形图像的自定义按钮,但每当我点击圆圈时,它仍然会记录一下。基本上它仍然在拾取图像的透明背景并记录点击次数。 我尝试过使用layer.cornerRadius和layer.masksToBounds,但似乎都没有帮助。 有谁知道我做错了什么?我对此很陌生?

ps我正在快速编程

3 个答案:

答案 0 :(得分:0)

为此,你必须对它进行子类化并添加一个UITapGestureRecognizer,当按下它时你必须计算从按钮边界中心到触摸点的距离,如果它的< = than button.width / 2那么它的内部圈。

答案 1 :(得分:0)

您需要覆盖UIButton的pointInside:方法。以下是工作示例,如果有任何问题,请写评论。

https://www.dropbox.com/sh/cj6w19rg03evadm/AABJx5iiWUGFxM-mcorX0MFEa?dl=0

更新:简而言之,这里是pointInside:withEvent:implementation:

override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
    let center = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height/2)
    let radius = self.frame.size.width/2
    let distance = sqrt(pow(point.x - center.x, 2) + pow(point.y - center.y, 2))
    return radius >= distance
}

答案 2 :(得分:0)

根据您对圆角按钮的提问,您需要使用 OBShapedButton

你可以从以下链接获取它:

https://www.cocoacontrols.com/controls/obshapedbutton

目前正在发生的事情是你吃圆形并保持其他区域是透明的,但它不会让你按钮轮。

要让你按钮变圆,你需要将角半径设置为UIButton,正好是你身高和宽度的一半,并设置clipsToBounds。
但它的可拍区域不会发生变化。

但是通过使用OBShapedButton,它将根据图像制作任何形状的按钮。

OBShapedButton做的是制作图像形状的按钮,排除图像的所有透明部分,并根据图像制作按钮的形状。

它甚至可以像按钮一样形成按钮:

enter image description here

希望它能解决你的问题。如有任何疑问,请告诉我。