2016-01-30 2 views
0

Я хочу, чтобы значения для цветов круга обновлялись, когда переменные (redd1, greenn1, bluee1) меняются степперами в моем ViewController. Исходный круг рисуется 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); 
} 

ответ

0

Я не так хорош в Swift, но это простой способ, как я дерево сделать это:

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 для шагового значения типа изменено и вызова метод для каждого цвета и для него, принадлежащий Int в IBAction для шагателя. Таким образом, каждый раз + или - на шагере, IBAction вызывает метод changeColor, а метод changeColor проверяет, какой цвет должен быть установлен в circle2.

Смежные вопросы