我正在MacOS应用程序中画一条线,但看不到这条线。有什么问题吗?
我的代码如下:
func addLine() {
let path = NSBezierPath()
path.move(to: NSPoint(x: 100.0, y: 100))
path.line(to: NSPoint(x: 200.0, y: 200.0))
NSColor.green.setFill()
NSColor.green.setStroke()
path.close()
path.stroke()
}
我叫它:
override func viewDidLoad() {
super.viewDidLoad()
addLine()
}
我做错什么了吗?我只是在窗口中什么都看不到。
答案 0 :(得分:1)
您是否创建了自己的NSView
子类?
如果我创建一个新视图并像这样添加您的代码:
import Cocoa
class MyView: NSView {
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
addLine()
}
func addLine() {
let path = NSBezierPath()
path.move(to: NSPoint(x: 100.0, y: 100))
path.line(to: NSPoint(x: 200.0, y: 200.0))
NSColor.green.setFill()
NSColor.green.setStroke()
path.close()
path.stroke()
}
}
然后,我-在情节提要中,将“自定义视图”拖到画布上,将视图的类型更改为MyView
,
然后我在运行该应用程序时看到了这一点:
如果您希望在代码中添加视图,则可以执行以下操作:
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
let myView = MyView()
myView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(myView)
myView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
myView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
myView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
myView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
}
}
因此,您的代码似乎可以正常工作,我不确定您是如何尝试使用它的。
希望给您带来继续的机会。