     
     public var progress = 0.0{
         didSet{
+            if self.progress != oldValue {
+                self.setNeedsDisplay()
+            }
+        }
+    }
+    
+    public var emptyLineWidth:CGFloat! = 1{
+        didSet{
             self.setNeedsDisplay()
         }
     }
     
-    public var emptyLineWidth:CGFloat! = 1{
-        didSet{
-            self.setNeedsDisplay()
-        }
-    }
-    
     public  var fillLineWidth:CGFloat = 3{
         didSet{
-            self.setNeedsDisplay()
-        }
-    }
-    
+            if self.fillLineWidth != oldValue {
+                self.setNeedsDisplay()
+            }
+        }
+    }
+    
+    private var _tintColor = UIColor.blue
     override public var tintColor: UIColor!{
-        didSet{
-            self.setNeedsDisplay()
+        get{
+            return self._tintColor
+        }
+        set{
+            self._tintColor = newValue
         }
     }
     

    
    fileprivate func drawCircle(endAngle:CGFloat,lineWidth:CGFloat,radius:CGFloat){
        let bezier = UIBezierPath()
        
        self.tintColor.setStroke()
        
        

    
    fileprivate var _radius:CGFloat!{
        get{
            if self.radius != 0 {
                return self.radius
            }else if  self.status == GLDownloadStatus.willDownload{
                return frame.width/8
            }else{
                return (frame.width < frame.height ? frame.width : frame.height)/2 - 2
            }
        }
    }
