Swift如何添加工作时钟?

时间:2015-11-16 23:44:28

标签: ios swift uibezierpath

我有这个时钟

enter image description here

我想制作类似的东西。我想让它在每一秒都工作,我的意思是工作开始充满然后逐渐变空。

我尝试了什么

我创建了一个自定义视图,并添加了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()
    }
}

我得到的只是:

enter image description here

我不知道哪里出错(也许我的整个方法都错了),我试图将值改为开始角度为0,结束角度为90,但保持相同的形状。

Updat3 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()

    }
}

但结果如下:

enter image description here

你可以将结果与我想要的图像进行比较,剪切不是我想要的。请看图片,我不知道怎么用英文说出来

1 个答案:

答案 0 :(得分:2)

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)