【发布时间】:2021-05-31 16:29:33
【问题描述】:
如标题所述,我无法检查按钮是否与 CAShapeLayer 相交。现在我有一个通过 UIPanGestureRecognizer 移动的按钮。当它放开时,我想检查它是否在我拥有的这个轮子上的某种颜色之上: Simulator View
颜色被生成为 CAShapeLayers,代码如下:
let path1 = UIBezierPath()
path1.addArc(withCenter: center, radius: 50, startAngle: CGFloat.pi/4 + 0.1, endAngle: CGFloat.pi*3/4 - 0.1, clockwise: true)
path1.addArc(withCenter: center, radius: 125, startAngle: CGFloat.pi*3/4 - 0.05, endAngle: CGFloat.pi/4 + 0.05, clockwise: false)
blueCircle.path = path1.cgPath
blueCircle.fillColor = UIColor(red: 0, green: 143/255, blue: 208/255, alpha: 1).cgColor
self.view.layer.addSublayer(blueCircle)
其中 blueCircle 是 CAShapeLayer。
我有代码检查我的“识别器”(UIPanGestureRecognizer)是否在发布时重叠,看起来像这样:
if recognizer.view!.frame.intersects(blueCircle.frame) {
print("Blue overlap")
}
但我怀疑它总是返回 false,因为它们不在同一个“层”中。我尝试了各种方法,包括使用边界而不是框架以及尝试使用手势识别器的中心进行转换,但它似乎无法正常工作。
【问题讨论】:
-
你说的按钮是
recognizer.view!吗?还是self.view? -
@Sweeper Recognizer.view!是按钮
标签: ios swift uiview uigesturerecognizer cashapelayer