如何根据视图控制器中的输入在视图中绘制形状?

How can I draw a shape in a view based on input in the view controller?

我想要做的一个非常基本的版本是在视图控制器中有一个滑块和一个视图。滑块表示多边形的边数,当您移动滑块时,会在子视图中绘制一个形状。

我只需要朝着正确的方向非常简单地推动。我只是不确定视图控制器和视图之间的交互是如何工作的。

给你。您创建自定义视图来绘制多边形。当它的 sides 属性 被设置时,它自己调用 setNeedsDisplay 告诉 iOS 调用 drawRect.

class PolygonView: UIView {
    var sides: Int = 0 {
        didSet {
            self.setNeedsDisplay()
        }
    }

    override func drawRect(rect: CGRect) {
        // Draw polygon using sides
    }
}

在您的 ViewController 中,当滑块值更改时更新 polygonView 上的 sides

class ViewController: UIViewController {
    @IBOutlet weak var polygonView: PolygonView!

    @IBAction func sliderChanged(sender: UISlider) {
        let sides = Int(sender.value)
        polygonView.sides = sides
    }
}

因此,当移动 slider 时,将调用 sliderChangedslider的值被读取并保存到polygonViewsides属性中。 didSet 在设置 sides 时被调用,而 polygonView 调用 setNeedsDisplay 自身。这告诉 iOS 需要绘制视图,因此 iOS 在 polygonView.

上调用 drawRect