Swift 如何添加工作时钟?
Swift How to add a working clock?
我有这个时钟
我想做类似的东西。我希望它每秒都工作,我的意思是工作开始时满满的,然后逐渐变空。
我试过的
我创建了一个自定义视图并添加了一个 UIBezierPath
,如下所示:
class CircleView: UIView {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
override func drawRect(rect: CGRect) {
let startAngle: CGFloat = 0.0
let endAngle: CGFloat = 80.0
let radius: CGFloat = 80.0
let path2 = UIBezierPath(arcCenter: center,
radius: radius/2,
startAngle: startAngle,
endAngle: endAngle,
clockwise: true)
UIColor.greenColor().setFill()
path2.fill()
}
}
我得到的是:
我不知道哪里错了(也许我的整个方法是错误的),我尝试将值更改为开始角度为 0,结束角度为 90,但保持相同的形状。
更新3 1
在人们建议我将度数更改为弧度后,我将代码更改为这样
class CircleView: UIView {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
func degreesToRadians (number: Int) -> CGFloat {
return CGFloat(number) * CGFloat(M_PI) / 180.0
}
override func drawRect(rect: CGRect) {
let startAngle: CGFloat = degreesToRadians(0)
let endAngle: CGFloat = degreesToRadians(270)
let radius: CGFloat = 40.0
let path2 = UIBezierPath(arcCenter: center,
radius: radius,
startAngle: startAngle,
endAngle: endAngle,
clockwise: true)
UIColor.greenColor().setFill()
path2.fill()
}
}
但结果是这样的:
你可以和我想要的图片对比一下,剪的不是我想要的。请看图片,我不知道用英语怎么说
class CircleView: UIView {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
override init(frame: CGRect) {
super.init(frame: frame)
}
func degreesToRadians (number: Int) -> CGFloat {
return CGFloat(number) * CGFloat(M_PI) / 180.0
}
override func drawRect(rect: CGRect) {
let startAngle: CGFloat = degreesToRadians(0)
let endAngle: CGFloat = degreesToRadians(270)
let radius: CGFloat = 40.0
let path = UIBezierPath(arcCenter: center,
radius: radius,
startAngle: startAngle,
endAngle: endAngle,
clockwise: true)
UIColor.greenColor().setFill()
path.addLineToPoint(center)
path.fill()
}
}
let c = CircleView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
...看到这一行
path.addLineToPoint(center)
我有这个时钟
我想做类似的东西。我希望它每秒都工作,我的意思是工作开始时满满的,然后逐渐变空。
我试过的
我创建了一个自定义视图并添加了一个 UIBezierPath
,如下所示:
class CircleView: UIView {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
override func drawRect(rect: CGRect) {
let startAngle: CGFloat = 0.0
let endAngle: CGFloat = 80.0
let radius: CGFloat = 80.0
let path2 = UIBezierPath(arcCenter: center,
radius: radius/2,
startAngle: startAngle,
endAngle: endAngle,
clockwise: true)
UIColor.greenColor().setFill()
path2.fill()
}
}
我得到的是:
我不知道哪里错了(也许我的整个方法是错误的),我尝试将值更改为开始角度为 0,结束角度为 90,但保持相同的形状。
更新3 1
在人们建议我将度数更改为弧度后,我将代码更改为这样
class CircleView: UIView {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
func degreesToRadians (number: Int) -> CGFloat {
return CGFloat(number) * CGFloat(M_PI) / 180.0
}
override func drawRect(rect: CGRect) {
let startAngle: CGFloat = degreesToRadians(0)
let endAngle: CGFloat = degreesToRadians(270)
let radius: CGFloat = 40.0
let path2 = UIBezierPath(arcCenter: center,
radius: radius,
startAngle: startAngle,
endAngle: endAngle,
clockwise: true)
UIColor.greenColor().setFill()
path2.fill()
}
}
但结果是这样的:
你可以和我想要的图片对比一下,剪的不是我想要的。请看图片,我不知道用英语怎么说
class CircleView: UIView {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
override init(frame: CGRect) {
super.init(frame: frame)
}
func degreesToRadians (number: Int) -> CGFloat {
return CGFloat(number) * CGFloat(M_PI) / 180.0
}
override func drawRect(rect: CGRect) {
let startAngle: CGFloat = degreesToRadians(0)
let endAngle: CGFloat = degreesToRadians(270)
let radius: CGFloat = 40.0
let path = UIBezierPath(arcCenter: center,
radius: radius,
startAngle: startAngle,
endAngle: endAngle,
clockwise: true)
UIColor.greenColor().setFill()
path.addLineToPoint(center)
path.fill()
}
}
let c = CircleView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
...看到这一行
path.addLineToPoint(center)