Wie haben Sie die Hintergrundfarbe eingestellt?
Eine Containeransicht ist eigentlich nur eine normale Ansicht, die mit einem viewController verknüpft ist. Dies bedeutet, dass Sie den Hintergrund auf die gleiche Weise wie für jedes andere NSView oder UIView festlegen können. Dies ist der gesamte Code, den ich meiner NSViewController-Klasse hinzufügen musste (nicht der viewController innerhalb des Containers, nur der viewController für das Fenster).
@IBOutlet weak var ContainerView: NSView!
override func viewDidLoad() {
//other code in your viewDidLoad
ContainerView.wantsLayer = true
}
override func awakeFromNib() {
super.awakeFromNib()
ContainerView.layer?.backgroundColor = NSColor.black.cgColor
}
Stellen Sie sicher, dass Sie das IBOutlet verbinden, falls Sie es nicht bereits getan haben.
Wenn Sie die Hintergrundfarbe der Ebenen in viewDidLoad festlegen, ist die Ebene möglicherweise noch nicht vorhanden (ich weiß nicht warum). Der Zugriff auf die Schicht in watchFromNib hat immer für mich funktioniert, während der Zugriff auf die Schicht in der viewDidLoad kann unzuverlässig sein.
Wenn Sie auf IOS arbeiten, die meisten dies nicht anwendbar ist, und dies sollte alles, was Sie brauchen, um
@IBOutlet weak var ContainerView: UIView!
override func viewDidLoad() {
ContainerView.layer?.backgroundColor = UIColor.black.cgColor
}
ich weniger auf IOS arbeiten, so dass ich nicht in irgendwelche Probleme mit der lief, aber das könnte aus Mangel an Versuchen sein. Unter OSX-Einstellung wird die Hintergrundfarbe in viewDidLoad etwa 50% der Zeit funktionieren, so dass es immer noch ein Problem geben kann, auf das ich noch nicht gestoßen bin.
Wenn keine funktioniert, versuchen Sie, die Ebene auszupacken, anstatt es optional zu lassen (ersetzt die? Mit einem!) Dies wird zumindest Ihr Programm zum Absturz bringen und Ihnen wahrscheinlich sagen, dass Schicht ist Null, wenn dies der Fall sein sollte herauszufinden, warum die Schicht null ist.
Auch wenn der ViewController, der mit der Containeransicht verbunden ist, eine benutzerdefinierte Klasse ist, müssen Sie sich nicht um die IBOutlets kümmern, rufen Sie einfach die Ansicht "view" in dieser benutzerdefinierten Klasse auf.
Sorry, das ist ein bisschen lang, aber hoffe, das half
Sie sollten Ihren Code oder Storyboard zeigen. –