Xcode 8 Playground不显示NSView

时间:2017-03-10 23:20:48

标签: xcode xcode8 swift-playground

Xcode在操场上不显示NSView。但它显示UIView没有任何问题。这是一个错误吗?

代码:

let view = NSView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
view.layer?.backgroundColor = NSColor.white.cgColor
PlaygroundPage.current.liveView = view

Xcode Playground也非常慢。有没有办法加快操场的速度?

1 个答案:

答案 0 :(得分:5)

UIViewNSView两者的工作方式不同。您发布的代码对UIView而言足够,但不适用于NSView

根据NSView的Apple文档:

  

NSView对象提供绘图,打印,   并在应用程序中处理事件。您通常不使用NSView对象   直。相反,您使用其类来自NSView的对象   或者您自己继承NSView并覆盖其实现的方法   你需要的行为。

  

draw(_:)绘制NSView对象。 (所有子类都必须实现此目的   方法,但很少明确调用。)

因此,您必须继承NSView并实施draw(_:)

以下是代码:

import Cocoa
import PlaygroundSupport


class view: NSView
{
    override init(frame: NSRect)
    {
        super.init(frame: frame)
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func draw(_ dirtyRect: NSRect)
    {
        NSColor.blue.setFill()
        NSRectFill(self.bounds)
    }
}

var v = view(frame: NSRect(x: 0, y: 0, width: 200, height: 200))

PlaygroundPage.current.liveView = v

<强>输出:

enter image description here

在Playground中使用iOS比使用macOS更好,因为它很容易,你也可以找到大量的教程或答案。