I'm quite new to iOS Development (so please forgive my ineptitude - I've looked everywhere!), and was looking to find a way to detect a tap on a CAShapeLayer
. So far, I've come across hitTest
. Is hitTest
the best method, and if so how is it used in Swift especially with CAShapeLayer
s? Also, if I had numerous CAShapeLayers, how would I use the hitTest method to refer to them individually?
This is how I created the CAShapeLayer:
let newBounds = CGRect(x: 0, y: 0, width: 200, height: 200)
let newShape = CAShapeLayer()
newShape.bounds = newBounds
newShape.position = view.center
newShape.cornerRadius = newBounds.width / 2
newShape.path = UIBezierPath(ovalInRect: newShape.bounds).CGPath
newShape.lineWidth = 42
newShape.strokeColor = UIColor(red: 222/255.0, green: 171/255.0, blue: 66/255.0, alpha: 1.0).CGColor
newShape.fillColor = UIColor.clearColor().CGColor
newShape.strokeStart = 0.2
newShape.strokeEnd = 0.4
view.layer.addSublayer(newShape)
Heres imo the best way to do what you want to achieve:
I used Arbitur's code and i had some errors. Here is a code i had with no errors. For swift 3.2 / 4.0
Swift 4,
My
UIImageView
is having multipleCAShapeLayer
objects, here is how I was able to detect taps on them.Ref
Use following code for get touch of
CAShapeLayer
.