gpt4 book ai didi

swift - MacOS 不显示 NSBezierPath 行

转载 作者:行者123 更新时间:2023-11-28 05:55:03 25 4
gpt4 key购买 nike

我试图在我的 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()
}

我做错了什么吗?我只是在我的窗口中看不到任何东西。

最佳答案

您是否创建了自己的 NSView 子类?

如果我创建一个新 View 并像这样添加您的代码:

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()
}
}

然后我 - 在 Storyboard 中 - 将“自定义 View ”拖到 Canvas 上,将 View 类型更改为 MyView,就像这样 storyboard setup

然后我在运行应用程序时看到了这个:

tada

如果你喜欢在代码中添加 View ,你可以这样做:

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
}
}

所以,您的代码似乎可以工作,我只是不确定您是如何尝试使用它的。

希望这能让您有所收获。

关于swift - MacOS 不显示 NSBezierPath 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51694683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com