2016-11-02 1 views
-2

Ich habe eine Containeransicht vom Storyboard gezogen und in Hintergrundfarbe schwarz gesetzt. aber es änderte die Hintergrundfarbe nicht.Wie man die Hintergrundfarbe einer Containeransicht einstellt

class ViewController: UIViewController { 

@IBOutlet weak var container: UIView! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    container.layer.backgroundColor = UIColor.blackColor().CGColor 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


} 
+0

Sie sollten Ihren Code oder Storyboard zeigen. –

Antwort

0

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

+0

Ich versuchte ContainerView.layer? .backgroundColor = UIColor.black.cgColor. aber es hat nicht funktioniert – henry

+0

Wo hast du das eingestellt? Bist du sicher, dass das IBOutlet über das Storyboard verbunden ist? – C1FR1

Verwandte Themen