     
     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
         }
     }
     

    }
    
    @objc internal func tapEvent(sender:UIGestureRecognizer){
        switch self.status{
        case .willDownload:
            self.status = .downloading
            break
        case .downloading:
            self.status = .pending
            break
        case .pending:
            self.status = .downloaded
            break
        case .downloaded:
            self.status = .willDownload
            break
        }
        
        self.tapEvent?(self)
    }

        }
    }
    
    public var radius:CGFloat! = 0
    
    public var stopButtonWidth:CGFloat = 10{
        didSet{
            self.setNeedsDisplay()
        }
