我正试图快速学习,似乎我已经陷入困境。
有人可以指出为什么{ 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应该设置。
答案 0 :(得分:0)
查看代码,您从未将pointsAndLines控件添加到视图中,因此您永远不会看到它。您可以将其添加为主视图的子视图,然后手动设置它的框架或使用自动布局来定位它。