2017-03-10 51 views
3

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

代码:

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

而且Xcode的游乐场是很慢的。有什么方法可以加速操场?

回答

4

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

根据苹果的文档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 

输出:

enter image description here


最好是在游乐场使用的iOS比MacOS的,因为它很容易,你也可以找一吨的教程或答案。

+0

感谢您的回答。由于缺乏教程,我也在考虑在Playground中使用iOS。 – ssh