我的drawRect函数不会更新

问题描述:

我希望当我的ViewController中的步进器更改变量(redd1,greenn1,bluee1)时更新圆的颜色值。原始圆圈由drawRect绘制。我的drawRect函数不会更新

var redd1 = 0.0; 
var greenn1 = 0.0; 
var bluee1 = 0.0; 
override init(frame: CGRect) 
{ 
    super.init(frame: frame) 
} 
required init?(coder aDecoder: NSCoder) 
{ 
    super.init(coder: aDecoder) 
} 

override func drawRect(rect: CGRect) 
{ 
    let circle2 = UIView(frame: CGRect(x: -25.0, y: 10.0, width: 100.0, height:100.0)) 
    circle2.layer.cornerRadius = 50.0 
    let startingColor2 = UIColor(red: (CGFloat(redd1))/255, green: (CGFloat (greenn1))/255, blue: (CGFloat(bluee1))/255, alpha: 1.0) 
    circle2.backgroundColor = startingColor2; 
    addSubview(circle2); 
} 

我试着创建一个新的函数,在旧的函数上绘制一个新的圆。它由步进器调用。新的函数updateColor()从步进器接收新值。这部分工作,因为它打印出正确的新值,但从不画新的圆。

func updateColor() 
{ 
    let circle = UIView(frame: CGRect(x: 0.0, y: 0.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); 
} 

我不是斯威夫特那么好,但是这是一个简单的方法,我木如何做到这一点:

var circle2: UIView 

    override func drawRect(rect: CGRect) { 
     circle2 = UIView(frame: CGRect(x: -25.0, y: 10.0, width: 100.0, height:100.0)) 
     circle2.layer.cornerRadius = 50.0 
     let startingColor2 = UIColor(red: (CGFloat(redd1))/255, green: (CGFloat (greenn1))/255, blue: (CGFloat(bluee1))/255, alpha: 1.0) 
     circle2.backgroundColor = startingColor2; 
     addSubview(circle2); 

    } 

    @IBAction valueChanged(sender: UIStepper) { 
     changeColor(color(the Color you want), Int(the Int value you want the color to change at)) 
    } 

    func changeColor(color: UIColor, number: Int) { 
     if stepper.value == number { 
      circle2.backgroundColor = color 
     } 
    } 

你必须创建一个IBAction为该类型值的改变步进和呼叫每种颜色的方法以及它对于步进器的IBAction都属于Int。所以每次在步进器上按+或 - 时,IBAction调用changeColor方法,changeColor方法测试哪种颜色应该设置为circle2。