如何启动函数 drawRect(rect: CGRect) ? Swift

How to start function drawRect(rect: CGRect) ? Swift

我的应用程序中有 rect:CGRect 功能,我该如何使用它?我试试

  drawRect(CGRect,x1:33.33,y1:23.45)

但我的功能在下面不起作用。

func drawRect(rect: CGRect,x1: CGFloat, y1: CGFloat) {

let center = CGPoint(x:x1/2, y: y1/2)
let radius: CGFloat = max(bounds.width, bounds.height)
let arcWidth: CGFloat = 100
let startAngle: CGFloat = 3 * π / 5.99
let endAngle: CGFloat = π / 1.40

let path = UIBezierPath(arcCenter: center,
                        radius: radius/2 - arcWidth/2,
                        startAngle: startAngle,
                        endAngle: endAngle,
                        clockwise: true)


path.lineWidth = arcWidth
counterColor.setStroke()
path.stroke()


}

您从不给自己打电话 drawRect。需要时由框架调用。

正确的解决方案是在视图上调用 setNeedsDisplay()。每当视图状态发生变化以至于您希望调用 drawRect 时调用它。

除此之外,您的 drawRect 方法有误。来自 UIView 的那个只有一个参数 - CGRect.

在 Swift 3 中它将是:

override func draw(_ rect: CGRect) {
}

您不应调用 drawRect()。当你想重绘视图时,调用setNeedsDisplay()方法。