我试图以编程方式调整视图大小,以便它在所有设备大小上看起来都很好,但我无法入门。
我有一个在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
}
一切布局后,这将设置视图的框架。它必须在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
的乘数并在那里设置背景颜色..