如何设置容器视图的背景颜色

时间:2016-11-02 03:39:26

标签: swift

我从故事板中拖出了一个容器视图,并将其设置为背景颜色为黑色。但它没有改变背景颜色。

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.
}


}

1 个答案:

答案 0 :(得分:1)

你是如何设置背景颜色的?

容器视图实际上只是一个普通视图,它链接到viewController。这意味着您可以像设置任何其他NSView或UIView一样设置背景。这是我需要添加到NSViewController类的所有代码(不是容器内的ViewController,只是窗口的ViewController)。

@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
}

确保连接IBOutlet(如果尚未连接)。

如果在viewDidLoad中设置图层背景颜色,则该图层可能尚不存在,(我不知道原因)。在awakeFromNib中访问图层一直对我有用,而在viewDidLoad中访问它可能是不可靠的。

如果您正在开发IOS,大部分内容都不适用,这应该就是您所需要的

@IBOutlet weak var containerView: UIView!
override func viewDidLoad() {
    containerView.layer?.backgroundColor = UIColor.black.cgColor
}

我在IOS上工作较少,所以我没有遇到任何问题,但这可能是因为缺乏尝试。在OSX设置中,viewDidLoad中的背景颜色将在大约50%的时间内工作,因此可能仍然存在我尚未遇到的问题。

如果两者都不起作用,请尝试展开图层而不是将其保留为可选(用?替换?)这至少会使程序崩溃并可能告诉您该图层为零,如果是这种情况则应该计算为什么这个图层是零。

此外,如果连接到容器视图的ViewController是自定义类,则不必担心IBOutlets,只需调用视图"查看"在那个自定义类中。

对不起,这有点长,但希望这有帮助