Xcode 8 Playground不显示NSView

ssh*_*ssh 3 xcode swift-playground xcode8

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
Run Code Online (Sandbox Code Playgroud)

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

Skr*_*ing 5

UIView并且NSView都位于它们的工作原理不同.您发布的代码足够UIView但不适合NSView.

根据Apple文档NSView:

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
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述


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