如何启动函数 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()方法。
我的应用程序中有 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()方法。