SWIFT 3. BezierPath并更新View

时间:2016-12-16 13:16:57

标签: ios

我很抱歉提出这样的问题,但是在阅读了很多关于如何解决我的问题的博客后,我现在迷失了。 我为我的故事板“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)")
…

twoarcs

0 个答案:

没有答案