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也非常慢。有没有办法加快操场的速度?
答案 0 :(得分:5)
UIView
和NSView
两者的工作方式不同。您发布的代码对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
<强>输出:强>
在Playground中使用iOS比使用macOS更好,因为它很容易,你也可以找到大量的教程或答案。