2017-03-10 76 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