Swift drawRect函数不会更新图形

问题描述:

我想让我的视图控制器中的步进器更新一个变量,它决定了我UIView中圆的颜色。我的变量正在更新,但我的updateColor函数中的圆圈没有绘制。Swift drawRect函数不会更新图形

的ViewController:

var colors = UIView1(); 

@IBOutlet var redValue: UILabel! 
@IBOutlet var greenValue: UILabel! 
@IBOutlet var blueValue: UILabel! 

@IBOutlet var redStepper: UIStepper! 
@IBOutlet var greenStepper: UIStepper! 
@IBOutlet var blueStepper: UIStepper! 

@IBOutlet var v: UIView1! 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
} 
override func didReceiveMemoryWarning() 
{ 
    super.didReceiveMemoryWarning() 
} 
@IBAction func redChange(sender: UIStepper) 
{ 
    redValue.text = Int(sender.value).description; 
    colors.redd1 = (Double(sender.value))*30; 
    colors.updateColor() 
} 
@IBAction func greenChange(sender: UIStepper) 
{ 
    greenValue.text = Int(sender.value).description; 
    colors.greenn1 = (Double(sender.value))*30; 
    colors.updateColor() 
} 
@IBAction func blueChange(sender: UIStepper) 
{ 
    blueValue.text = Int(sender.value).description; 
    colors.bluee1 = (Double(sender.value))*30; 
    colors.updateColor() 
} 

的UIView:

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

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

你需要调用方法setNeedsDisplay()对你的看法。这将调用drawRect

所以 - addSubview之后添加方法(圆圈)

+0

它仍然没有工作。 updateColor不绘制圆,所以我认为这是问题 – Steve