我的应用程序中有一个大小为312x312的视图,其中包含一个类似的模拟时钟:
每次用户点击时钟时都会调用一个方法。
我尝试使用三角函数来确定用户点击的小时(时钟部分),如下所示:
let touchPoint = tapGestureRecognizer.locationInView(self)
let delta = CGPoint(x: center.x - touchPoint.x, y: center.y - touchPoint.y)
let distance = hypotf(Float(delta.x), Float(delta.y))
//Ignore points outside circle
guard distance < Float(min (frame.width / 2, frame.height / 2)) else {
return
}
let angle = atan2f(Float(delta.y), Float(delta.x))
let proportion = angle / (Float(M_PI) * 2) + 0.5
let hour = (Int(proportion * 12) + 3) % 12 + 1
print (hour)
但它给了我错误的结果:
格式为hourTapped: hourPrinted
:
有时我甚至会忽略圈内的水龙头。
这种方法有什么问题?
谢谢!