固定!
まず、私が表示さや形状がタップされたときに隠すためにtouchesbegan機能をオーバーライドたより私はこの
var path = UIBezierPath()
path.moveToPoint(CGPointMake(20, 30))
path.addLineToPoint(CGPointMake(40, 30))
// add as many coordinates you need...
path.closePath()
var layer = CAShapeLayer()
layer.path = path.CGPath
layer.fillColor = UIColor(red: 255, green: 0, blue: 0, alpha: 0.5).CGColor
layer.hidden = true
bodyImage.layer.addSublayer(layer)
ようにUIImageViewにサブレイヤを追加しました。
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
if let touch = touches.first! as? UITouch {
// get tapped position
let position = touch.locationInView(self.bodyImage)
// loop all sublayers
for layer in self.bodyImage.layer.sublayers! as! [CAShapeLayer] {
// check if tapped position is inside shape-path
if CGPathContainsPoint(layer.path, nil, position, false) {
if (layer.hidden) {
layer.hidden = false
}
else {
layer.hidden = true
}
}
}
}
}
だから、あなたは2Dまたは3Dの蜂にしたいですか? – rptwsthi
** hitTest:**とCALayerをお勧めします。ここには[ObjCの同等](http://sketchytech.blogspot.co.uk/2012/10/the-secret-life-of-calayer-part- 2.html)それは有用であると私は喜んでスウィフトに翻訳することができます – sketchyTech
@sketchyTech 'CALayer'' hitTest'はレイヤの矩形の境界でのみ動作します。 OPのイラストは不規則な形をしています。私はベジェパスを使うと思うし、 'containsPoint'はこの場合には良いでしょう。 (プラスのレイヤーは、他のレベルの複雑さをもたらす低レベルのシステムコンポーネントです)。彼らは確かに強力ですが、私は彼らがこの場合にはさらに複雑になる価値はないと思います。 –