使用Swift(iOS)创建可点击的身体图

kla*_*kox 6 html5 area coords ios swift

我正在尝试为iOS应用程序(Swift)重新创建一些我已经在HTML5(使用map area-coords)中创建的东西.

我想展示一个与用户点击/触摸相互作用的人体图.身体存在让我们说20个不同的部分,用户可以选择一个或多个身体部位.对于每个身体部位,都有一个选定状态的图像,应该在选择一个部分时出现.单击选定的部件将取消选择它.在选择一个或多个部件之后,用户可以继续并且将在下一个部分获得关于这些部件的一些信息viewcontroller.我附上一张简化的图片来解释我的目标.

身体部位选择

有人能解释一下实现这一目标的最佳方法吗?是否有可用于Swift的类似技术来创建这样的交互式图像?

谢谢!

kla*_*kox 0

固定的!

首先,我像这样向 UIImageView 添加了子图层

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)
Run Code Online (Sandbox Code Playgroud)

我重写了 TouchsBegan 函数,以便在点击形状时显示和隐藏。

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
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)