【问题标题】:How can I draw a simple line?(OS X)我怎样才能画一条简单的线?(OS X)
【发布时间】:2016-05-25 13:08:33
【问题描述】:

我试过了:

import Cocoa

class ViewController: NSViewController {

@IBOutlet weak var butt: NSButton!
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
}

override var representedObject: AnyObject? {
    didSet {
    // Update the view, if already loaded.
    }
}
@IBAction func buttPressed(sender: AnyObject) {
    let myPath = NSBezierPath()
    myPath.moveToPoint(CGPoint(x: 20, y: 20))
    myPath.lineToPoint(CGPoint(x: 100, y: 100))
    myPath.stroke()
}

}

它编译并运行,但在单击按钮时不绘制任何内容。 我尝试设置颜色:NSColor.redColor().set(),设置宽度:myPath.lineWidth = 20 并使用NSPoint 而不是CGPoint,但仍然发生同样的事情。我错过了什么? 提前感谢您的回答,并对基本问题感到抱歉。

【问题讨论】:

  • 不确定您搜索的是什么,但请尝试:“cocoa”“drawing”“example”“swift”。它给了我很多例子。
  • 试图直接在viewDidLoad (myPath.stroke()) 中绘制是没有意义的,因为正如错误告诉你的那样,你无处可绘制 in (没有“上下文")。
  • "我正在直接在 viewDidLoad 中绘图" 我告诉你这没有任何意义。不要这样做。
  • 你仍然没有上下文。你好像没在听我不知道你想让这条线go到哪里,运行时也不知道。你必须告诉它。你必须有一个可以画画的地方才能画画。
  • @matt 好吧,我应该如何创建上下文?如果您请发布正确的代码作为答案,我会将其标记为已接受。

标签: swift macos cocoa swift2


【解决方案1】:

尝试在drawRect (NSView) 内部进行操作:

import Cocoa

final class Line: NSView {
    override func drawRect(dirtyRect: NSRect) {
        let myPath = NSBezierPath()
        myPath.moveToPoint(CGPoint(x: 20, y: 20))
        myPath.lineToPoint(CGPoint(x: 100, y: 100))
        myPath.stroke()
    }
}

final class ViewController: NSViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let frame = CGRect(x: 0, y: 0, width: 100, height: 100)
        let line = Line(frame: frame)
        view.addSubview(line)
    }

    override var representedObject: AnyObject? {
        didSet {
            // Update the view, if already loaded.
        }
    }

}

【讨论】:

    猜你喜欢
    • 2015-04-10
    • 2015-03-13
    • 2015-08-21
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2022-01-11
    相关资源
    最近更新 更多