0
我希望View Controller中的步进器在每次单击它时更新我自定义的UIView
中的颜色。我不确定问题是由类的实例引起的,还是变量的值(redd1
,greenn1
和bluee1
)未被更改。Swift UIView自定义视图在ViewController动作后不会更新
这是我的第一个文件:
class ViewController: UIViewController {
var colors = UIView1();
@IBOutlet var redStepper: UIStepper!
@IBOutlet var greenStepper: UIStepper!
@IBOutlet var blueStepper: UIStepper!
@IBAction func redChange(sender: UIStepper)
{
redValue.text = Int(sender.value).description;
colors.redd1 = Double(sender.value);
//self.view.setNeedsDisplay()
}
@IBAction func greenChange(sender: UIStepper)
{
greenValue.text = Int(sender.value).description;
colors.greenn1 = Double(sender.value);
//self.view.setNeedsDisplay()
}
@IBAction func blueChange(sender: UIStepper)
{
blueValue.text = Int(sender.value).description;
colors.bluee1 = Double(sender.value);
//self.view.setNeedsDisplay()
}
}
这是我的第二个文件:
class UIView1: 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 circle = UIView(frame: CGRect(x: -75.0, y: -40.0, width: 200.0, height: 200.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);
}
}
遗憾的是它没有工作,但欣赏它 – Steve
首先,尝试添加在您的IBActions中打印(sender.value)以确保您收到正确的值。如果发生这种情况,请将print(redd1),print(greenn1)和print(bluee1)添加到updateColor()函数中,以查看是否接收值或运行。 –
不错的主意。我试了一下,我所有的价值都被接收了。 – Steve