【问题标题】:my drawRect function will not update我的 drawRect 函数不会更新
【发布时间】:2016-01-30 20:32:34
【问题描述】:

我希望当我的 ViewController 中的步进器更改变量(redd1、greenn1、bluee1)时,圆圈颜色的值会更新。原来的圆是用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);
}

【问题讨论】:

    标签: swift view viewcontroller geometry drawrect


    【解决方案1】:

    我的 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,并为步进器的 IBAction 中属于 Int 的每种颜色调用该方法。因此,每次按下步进器上的 + 或 - 时,IBAction 都会调用 changeColor 方法,而 changeColor 方法测试应该将哪种颜色设置为 circle2。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 2021-10-31
      • 2022-01-01
      • 2013-01-30
      相关资源
      最近更新 更多