我从故事板中拖出了一个容器视图,并将其设置为背景颜色为黑色。但它没有改变背景颜色。
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 :(得分: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,只需调用视图"查看"在那个自定义类中。
对不起,这有点长,但希望这有帮助