我在绘制rect函数中有一个循环进度,它是UIControl的子类。 Swift 3,Xcode 8。
看起来像这样:
override func draw(_ rect: CGRect) {
super.draw(rect)
guard let ctx = UIGraphicsGetCurrentContext() else {
return
}
let center = CGPoint(x:rect.size.width/2.0,y:rect.size.height/2.0)
ctx.setStrokeColor(UIColor.cyan.cgColor)
ctx.setLineWidth(40)
ctx.setLineCap(.round)
ctx.addArc(center: center, radius: radius, startAngle: 0, endAngle: CGFloat(M_PI * 2), clockwise: true)
ctx.drawPath(using: .stroke)
}
此视图以编程方式添加到@IBDesignable UIViewSubclass
override func awakeFromNib() {
super.awakeFromNib()
self.backgroundColor = UIColor.yellow
self.circleTest = TestCircle(frame: self.bounds)
self.addSubview(circleTest!)
setupConstraints() //pins subview to edges of self.
}
我哪里出错?
答案 0 :(得分:1)
问题是radius
的设置。在评论中,您指出您在init
中设置它,并且您显然必须允许帧中的后续更改(尤其是在使用自动布局时),因此您可以移动{{1进入draw(_:)
(或者,如果您没有使用radius
,而是使用draw(_:)
等,则可以在layoutSubviews()
中执行此操作。)