Ho questo codice nel mio ViewController. Il punto di vista che sto aggiungendo a livello di programmazione non è comunque da vedere.
override func viewDidLoad() {
super.viewDidLoad()
let f: NSRect = NSMakeRect(0, 0, 200, 200)
let v: NSView = NSView(frame: f)
v.layer?.backgroundColor = NSColor.yellowColor().CGColor
self.view.addSubview(v)
}
Inoltre ho provato a creare un NSWindowController personalizzato e l'ho impostato come Classe personalizzata della mia finestra principale nello storyboard del builder di interfacce. Lì ho il seguente codice:
override func windowDidLoad() {
super.windowDidLoad()
let f: NSRect = NSMakeRect(0, 0, 200, 200)
let v: NSView = NSView(frame: f)
v.layer?.backgroundColor = NSColor.yellowColor().CGColor
self.window?.contentView?.addSubview(v)
}
Questo non funziona neanche: /
Ho anche provato a impostare v.wantsLayer = true
come una delle risposte che ho trovato online suggerito, tuttavia, mi è sembrato strano dall'inizio e ovviamente non ha fatto nulla.
Cosa sto facendo di sbagliato qui?
risposte:
1 per risposta № 1Rispondendo alla mia domanda mentre esaurivo tutti i possibili scenari e, naturalmente, il colpevole finì per essere wantsLayer
.
Inizialmente ho fatto:
override func windowDidLoad() {
super.windowDidLoad()
let f: NSRect = NSMakeRect(32, 32, 200, 200)
let v: NSView = NSView(frame: f)
v.layer?.backgroundColor = NSColor.greenColor().CGColor
v.wantsLayer = true
self.window?.contentView?.addSubview(v)
if let views = self.window?.contentView?.subviews {
for v in views {
print(v.frame)
}
}
}
Ho potuto vedere che la vista è stata aggiunta a contentView, tuttavia era invisibile. Ho fatto molte cose prima di rendermi conto del mio errore che era:
Il v.wantsLayer = true
la dichiarazione doveva essere (ovviamente) al di sopra della linea in cui ho specificato il colore di sfondo del livello stesso.
Quindi sì ... ora funziona:
override func windowDidLoad() {
super.windowDidLoad()
let f: NSRect = NSMakeRect(32, 32, 200, 200)
let v: NSView = NSView(frame: f)
v.wantsLayer = true
v.layer?.backgroundColor = NSColor.greenColor().CGColor
self.window?.contentView?.addSubview(v)
}