Ios 设置视图的背景色不起作用

Ios 设置视图的背景色不起作用,ios,swift,uiview,background-color,Ios,Swift,Uiview,Background Color,我正试图以编程方式调整视图的大小,以便它在所有设备大小上看起来都很好,但我在开始时遇到了问题 我在main.storyboard上有一个视图,具有水平和垂直居中的约束 我在viewDidLoad()方法中有以下代码: centerView.frame.size.width = 2/3 * view.frame.width centerView.frame.size.height = 2/3 * view.frame.height centerView.layer.backgroundColo

我正试图以编程方式调整视图的大小,以便它在所有设备大小上看起来都很好,但我在开始时遇到了问题

我在main.storyboard上有一个视图,具有水平和垂直居中的约束

我在
viewDidLoad()
方法中有以下代码:

centerView.frame.size.width = 2/3 * view.frame.width

centerView.frame.size.height = 2/3 * view.frame.height

centerView.layer.backgroundColor = UIColor.blue.cgColor

当我启动应用程序时,视图没有背景色。这里的问题是什么?

您将约束与帧混合。。你不能那样做。。最有可能的是,您的视图大小不正确,因此即使背景色在那里,您也看不到背景色。。在视图层次检查器中检查视图大小

选项1:继续将约束与帧混合:

func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    centerView.frame.size.width = 2.0/3.0 * view.frame.width
    centerView.frame.size.height = 2.0/3.0 * view.frame.height
    centerView.layer.backgroundColor = UIColor.blue.cgColor
}
这将在布局完所有内容后设置视图的框架。它必须在子类的
viewdilayoutsubviews
layoutSubviews
中完成

选项2:仅使用约束

func viewDidLoad() {
    super.viewDidLoad()

    centerView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 2.0 / 3.0, constant: 0.0).isActive = true
    centerView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 2.0 / 3.0, constant: 0.0).isActive = true
    centerView.layer.backgroundColor = UIColor.blue.cgColor
}

选项3:在情节提要中执行。。您可以将
2.0/3.0
倍增,并在那里设置背景色。

您正在将约束与帧混合。。你不能那样做。。最有可能的是,您的视图大小不正确,因此即使背景色在那里,您也看不到背景色。。在视图层次检查器中检查视图大小

选项1:继续将约束与帧混合:

func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    centerView.frame.size.width = 2.0/3.0 * view.frame.width
    centerView.frame.size.height = 2.0/3.0 * view.frame.height
    centerView.layer.backgroundColor = UIColor.blue.cgColor
}
这将在布局完所有内容后设置视图的框架。它必须在子类的
viewdilayoutsubviews
layoutSubviews
中完成

选项2:仅使用约束

func viewDidLoad() {
    super.viewDidLoad()

    centerView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 2.0 / 3.0, constant: 0.0).isActive = true
    centerView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 2.0 / 3.0, constant: 0.0).isActive = true
    centerView.layer.backgroundColor = UIColor.blue.cgColor
}

选项3:在情节提要中执行。。您可以执行
2.0/3.0的倍增并在那里设置背景色。

使用:
centerView.backgroundColor=.blue
使用:
centerView.backgroundColor=.blue