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

问题描述 投票:0回答:1

我试图以编程方式调整视图大小,以便它在所有设备大小上看起来都很好,但我无法入门。

我有一个在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

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

ios swift uiview background-color
1个回答
2
投票

你正在用框架混合约束..你不能这样做..最有可能的是,你的视图尺寸不正确,所以即使它在那里你也看不到背景颜色..在视图中检查你的视图大小层次结构检查员。

选项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
}

一切布局后,这将设置视图的框架。它必须在viewDidLayoutSubviews或子类的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的乘数并在那里设置背景颜色..

© www.soinside.com 2019 - 2024. All rights reserved.