UIBezierPath没有按预期更新

这是我的自定义视图的代码:

class CircleView3: UIView { let endPoint = 270.0 var index = 0.0 var startPoint: Double { get{ index++ let div = 360.0/60.0 let vaule = div * index return 290.0 + vaule } } func degreesToRadians (number: Double) -> CGFloat { return CGFloat(number) * CGFloat(M_PI) / 180.0 } override func drawRect(rect: CGRect) { super.drawRect(rect) let startAngleRadiant: CGFloat = degreesToRadians(startPoint) let endAngleRadiant: CGFloat = degreesToRadians(endPoint) print("start = \(startAngleRadiant)") print("end = \(endAngleRadiant)") let center = CGPoint(x: bounds.midX, y: bounds.midY) let path = UIBezierPath() path.moveToPoint(center) path.addArcWithCenter(center, radius: self.frame.height/2.2, startAngle: startAngleRadiant, endAngle: endAngleRadiant, clockwise: true) path.addLineToPoint(center) let strokeColor: UIColor = UIColor(red: 155.0/255.0, green: 137.0/255.0, blue: 22.0/255.0, alpha: 1.0) strokeColor.setFill() //strokeColor.setStroke() path.fill() path.stroke() } } 

我正在画一个圆圈。 我每秒从视图控制器调用setNeedsDisplay函数。 我应该绘制一个每秒都在减less开始和结束点的圆圈,但是圆圈在更新之后仍然保持最后一行(位置)。 加上圆圈没有填充我的颜色,只是线条被填满。

http://www.mediafire.com/watch/xnkew5eu8da5wub/IMG_0066.MOV

更新

我在drawRect打印起始值,这些值是正确的:

 start = 293.6 start = 297.2 start = 300.8 start = 304.4 start = 308.0 start = 311.6 start = 315.2 start = 318.8 start = 322.4 start = 326.0 start = 329.6 start = 333.2 start = 336.8 start = 340.4 

当然这些是在将它们改为弧度之前的值。

更新2

在我调用strokeColor.setFill()情况会好一些,但是我仍然看到这个问题。 请看这个新video:

http://www.mediafire.com/watch/nb1b3v2zgqletwb/IMG_0069.MOV

对于它的价值,我把你的代码放在一个项目中,我看到一个缩小的圆圈,因为在customView上调用了setNeedsDisplay。 它不像你的video画。

这是我的附加代码:

 class ViewController: UIViewController { @IBOutlet weak var circleView: CircleView3! override func viewDidLoad() { super.viewDidLoad() NSTimer.scheduledTimerWithTimeInterval(0.25, target: self, selector: "updateCircle", userInfo: nil, repeats: true) } func updateCircle() { circleView.setNeedsDisplay() } }