【发布时间】:2017-10-09 19:03:39
【问题描述】:
我有一个CAShapeLayer,我已将其填充颜色标记为透明。
当我点击线路时,它并不总是检测CAShapeLayer cgpath 是否包含点击点。我的代码如下:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first
guard let point = touch?.location(in: self) else { return }
for sublayer in self.layer.sublayers! {
if let l = sublayer as? CAShapeLayer {
if let path = l.path, path.contains(point) {
print("Tap detected")
}
}
}
}
所以我想把从 6 到 45 的线做得很粗,但还是不行。然后我想在此之后将填充设置为灰色,当我点击填充灰色时,它总是会检测到点击。我真的很困惑,为什么它会检测到填充点或线的中心点,为什么不检测线的整个厚度。
【问题讨论】:
标签: ios swift cashapelayer hittest