我有一个时钟视图,看起来是这样的:
我想在每小时(12-1,1-2,2-3,3-4,4-5,5-6,6-7,7-8,8-9,9-10,10-11,11-12)之间添加一个UIButton
,如下所示:
有一个按钮的时钟示例:
知道怎么做吗?
谢谢!
发布于 2016-10-23 16:00:07
你不需要纽扣。您可以创建您的时钟作为一个单一的UIView,并添加一个触摸手势识别器。使用三角函数将触点转换为时钟部分。
class ClockView: UIView {
override func awakeFromNib() {
super.awakeFromNib()
addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(tapClock)))
}
@objc private func tapClock (tapGestureRecognizer: UITapGestureRecognizer) {
let touchPoint = tapGestureRecognizer.location(in: 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.pi * 2) + 0.5
let hour = (Int(proportion * 12) + 3) % 12 + 1
print (hour)
}
}
您可以按照本教程绘制时钟:http://sketchytech.blogspot.com/2014/11/swift-how-to-draw-clock-face-using.html
https://stackoverflow.com/questions/40204141
复制相似问题