Swift没有多次调用draw(GRect)

时间:2017-06-14 11:56:50

标签: swift

我正试图快速学习,似乎我已经陷入困境。 有人可以指出为什么{ didSet { setNeedsDisplay() } }似乎不起作用?! 目标是画一个用户点击的小圆圈 这是我的控制器:

import UIKit


class ViewController: UIViewController {

@IBOutlet weak var display: UIView!{

    didSet{

        display.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(addCirclePoint(byReactingTo:))))

    }

}

  let pointsAndLines = PointsAndLinesView()

  func addCirclePoint(byReactingTo tapRecognizer: UITapGestureRecognizer){
    let point = tapRecognizer.location(in: display)
        pointsAndLines.point = point

  }

}

这是我的观点:

 import UIKit


class PointsAndLinesView: UIView {

var point = CGPoint(){ didSet{ setNeedsDisplay() } }


private func addCirclePoint()->UIBezierPath{

    let circlePoint = UIBezierPath(arcCenter: point, radius: 5.0, startAngle: 0, endAngle: 2 * CGFloat.pi, clockwise: true)
    circlePoint.lineWidth = 4
    print("Did I run?!")
    return circlePoint

}

override func draw(_ rect: CGRect) {

    UIColor.black.set()

    addCirclePoint().stroke()

}

}

期待您的回复。

修改

如果有人需要它以供将来参考,那么错误就是,

该显示是PointsAndLinesView的子类,而不是UIView的子类

和display.point应该设置。

1 个答案:

答案 0 :(得分:0)

查看代码,您从未将pointsAndLines控件添加到视图中,因此您永远不会看到它。您可以将其添加为主视图的子视图,然后手动设置它的框架或使用自动布局来定位它。