我很抱歉提出这样的问题,但是在阅读了很多关于如何解决我的问题的博客后,我现在迷失了。 我为我的故事板“CircleView”添加了一个新视图,该视图已分配了CircleClock类。 我正在做的第一个是调用CircleClock的初始化器。 然后是滑块更改弧宽,如果更改,则调用setNeedsDisplay()。最初绘制圆圈,但是 滑块更改不再调用函数draw(_ rect:CGRect)。 我还认识到的是
中设置的值init(origin: CGPoint) {
self.startAngle = 5
self.endAngle = 6
初始化完成后,未设置为5和6,它们将恢复为原始值,如 var endAngle:CGFloat = 3.14 / 4。 我看到很多关于添加圈子作为子视图的评论。我尝试了,但后来我显示了两个视图,新添加的子视图从滑块获取更新原始仍然没有改变。但现在设定角度5和6的值!??
class ViewController: UIViewController {
var circle = CircleClock(origin: CGPoint(x: 0, y: 0))
@IBAction func sliderWidth(_ sender: Any) {
circle.arcWidth = CGFloat(sliderWidth.value)
// so my slider is changing the arcWitdh
}
override func viewDidLoad() {
super.viewDidLoad()
let tapGR = UITapGestureRecognizer(target: self, action: #selector(self.didTap(_:)))
self.view.addGestureRecognizer(tapGR)
// view.addSubview(circle) // This will be the question
}
class CircleClock: UIView {
let size: CGFloat = 150.0
var arcWidth: CGFloat = 76{
didSet {
// if changed please redraw
print("\(arcWidth)")
self.setNeedsDisplay()
}
}
let π:CGFloat = CGFloat(M_PI)
var path = UIBezierPath()
var mycenter = CGPoint()
var radius = CGFloat()
var startAngle = CGFloat() // = 3 * 3.14 / 4
var endAngle : CGFloat = 3.14 / 4
init(origin: CGPoint) {
self.startAngle = 5
self.endAngle = 6
super.init(frame: CGRect(x: 100.0, y: 0.0, width: size, height: size))
}
function draw
override func draw(_ rect: CGRect) {
print("width: \(self.bounds.width)")
print("width: \(self.bounds.height)")
…