Skip to content

Instantly share code, notes, and snippets.

@sketchytech
Created November 9, 2014 20:28
Show Gist options
  • Save sketchytech/e116fd61c4f29844d360 to your computer and use it in GitHub Desktop.
Save sketchytech/e116fd61c4f29844d360 to your computer and use it in GitHub Desktop.
Swift: Layer hit-testing
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var blueLayer = CALayer()
blueLayer.frame = CGRectMake(100, 100, 100, 100)
blueLayer.backgroundColor = UIColor.blueColor().CGColor
blueLayer.name = "Blue"
self.view.layer.addSublayer(blueLayer)
var redLayer = CALayer()
redLayer.frame = CGRectMake(200, 200, 100, 100)
redLayer.backgroundColor = UIColor.redColor().CGColor
redLayer.name="Red"
self.view.layer.addSublayer(redLayer)
var yellowLayer = CALayer()
yellowLayer.frame = CGRectMake(300, 300, 100, 100)
yellowLayer.backgroundColor = UIColor.yellowColor().CGColor
yellowLayer.name = "Yellow"
self.view.layer.addSublayer(yellowLayer)
var greenLayer = CALayer()
greenLayer.frame = CGRectMake(400, 400, 100, 100)
greenLayer.backgroundColor = UIColor.greenColor().CGColor
greenLayer.name="Green"
self.view.layer.addSublayer(greenLayer)
}
override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
if let touch: AnyObject = touches.anyObject() {
let location = touch.locationInView(self.view)
let point = self.view.convertPoint(location, fromView:nil)
if let hitLayer = self.view.layer.hitTest(point) {
if let name = hitLayer.name {
displayInfo(hitLayer.name)
}
}
}
}
func displayInfo(name:String) {
println(name)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment