Это код внутри моего пользовательского класса представления:
func drawTestingPoint(_ point: CGPoint, target: Int, output: Int) {
let path = NSBezierPath()
path.appendArc(withCenter: point, radius: 5, startAngle: 0, endAngle: 360)
NSColor.black.setStroke()
if target == output {
NSColor.green.setFill()
} else {
NSColor.red.setFill()
}
path.lineWidth = 3
path.fill()
path.stroke()
}
override func draw(_ dirtyRect: NSRect) {
//If I call the drawTestingPoint function here it works
}
Внутри моего viewDidLoad
метода в моем NSViewController
классе я настраиваю пользовательское представление и пытаюсь нарисовать точку тестирования:
let size = getDataViewSize()
let origin = CGPoint(x: view.frame.width/2-size.width/2, y: view.frame.height/2-size.height/2)
dataView = DataView(frame: CGRect(origin: origin, size: size))
view.addSubview(dataView)
dataView.drawTestingPoint(CGPoint(x: view.frame.width/2 y: view.frame.height/2), target: target, output: output)
dataView.needsDisplay = true
Моя проблема в том, что ничто не притягивается.Я думаю, что не может быть ничего плохого в моей функции drawTestingPoint
, потому что когда я вызываю ее внутри моей функции draw(_ dirtyRect: NSRect)
в моем пользовательском классе NSView
, она работает.Что я могу сделать, чтобы я мог вызывать эту функцию внутри моей viewDidLoad
функции, как вы можете видеть в приведенных выше фрагментах кода, чтобы моя точка была нарисована