我想使用touch.location()
检查用户触摸的区域如何将circe分成相等的10个部分并且用户检测触摸区域的位置
如果用户触摸该区域,那么我想显示" 1"在标签
(图片有4件,但我想要10件)
答案 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
然后根据图中的需要,第一块位于左侧。