2016-01-29 60 views
0

我在我的視圖控制器中更新變量(redd1,greenn1,bluee1)的步進器。我有一個通過drawRect函數繪製的圓。函數updateColor()假設用變量的更新顏色繪製一個新的圓。當我輸出變量的新值時,它們的出現是正確的,但圓的顏色仍然不會改變。快速功能不更新圖

func updateColor() 
{ 
    let circle = UIView(frame: CGRect(x: -25.0, y: 10.0, width: 100.0, height: 100.0)) 
    circle.layer.cornerRadius = 50.0; 
    let startingColor = UIColor(red: (CGFloat(redd1))/255, green: (CGFloat(greenn1))/255, blue: (CGFloat(bluee1))/255, alpha: 1.0) 
    circle.backgroundColor = startingColor; 
    addSubview(circle); 
    //print(redd1); 
} 
+0

沒有你試圖circle.backgroundColor = newColor? – Cing

回答

1

您每次要更改顏色時都會創建並添加一個新圓圈(一個UIView)。你爲什麼不簡單改變現有圈子的顏色?

class Foo: UIView { 

    var red: Float = 255 
    var green: Float = 0 
    var blue: Float = 0 

    private let circle = UIView(frame: CGRect(x: -25.0, y: 10.0, width: 100.0, height: 100.0)) 

    private var circleColor: UIColor { 
     return UIColor(
      red: (CGFloat(self.red))/255, 
      green: (CGFloat(green))/255, 
      blue: (CGFloat(blue))/255, 
      alpha: 1.0) 
    } 

    override init (frame: CGRect) { 
     super.init(frame: frame) 
     addCircle() 
    } 

    required init(coder aDecoder: NSCoder) { 
     fatalError("This class does not support NSCoding") 
    } 

    private func addCircle() { 
     circle.layer.cornerRadius = 50.0 
     circle.backgroundColor = self.circleColor 
     addSubview(circle) 
    } 

    func updateColor() { 
     circle.backgroundColor = self.circleColor 
    } 
} 

enter image description here