所以我在xCode中创建了一个带有圆形图像的自定义按钮,但每当我点击圆圈时,它仍然会记录一下。基本上它仍然在拾取图像的透明背景并记录点击次数。 我尝试过使用layer.cornerRadius和layer.masksToBounds,但似乎都没有帮助。 有谁知道我做错了什么?我对此很陌生?
ps我正在快速编程
答案 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做的是制作图像形状的按钮,排除图像的所有透明部分,并根据图像制作按钮的形状。
它甚至可以像按钮一样形成按钮:
希望它能解决你的问题。如有任何疑问,请告诉我。