我想计算用户触摸的点数区域

时间:2017-11-09 06:12:47

标签: ios touch coordinate

我想使用touch.location()

检查用户触摸的区域

如何将circe分成相等的10个部分并且用户检测触摸区域的位置

enter image description here

如果用户触摸该区域,那么我想显示" 1"在标签

(图片有4件,但我想要10件)

1 个答案:

答案 0 :(得分:0)

以下示例将视图的触摸区域划分为切割比萨饼片等扇区。视图的中心点被视为坐标的原始点。然后我们计算触摸点和中心点之间的线的弧度,以找出它所在的部分。

class ExampleView: UIView {

    let numberOfPieces = 10

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesBegan(touches, with: event)

        let touch = touches.first
        if let location = touch?.location(in: self) {

            let centerPoint = CGPoint(x:self.bounds.midX,y:self.bounds.midY)
            let radians = atan2(location.y - centerPoint.y,location.x - centerPoint.x)
            var degrees = radians * (180.0 / CGFloat.pi) + 180.0 // adding 180 for making the first piece at left side.
            degrees = (degrees > 0.0 ? degrees : (360 + degrees))

            let piece = Int(degrees / (360.0 / CGFloat(numberOfPieces))) + 1
            print("piece \(piece) touched.")
        }
    }
}

默认的UIView坐标系是:

       270  
180             0  
       90

所以我们加180度旋转它:

      90
0            180
      270

然后根据图中的需要,第一块位于左侧。