我将问题简化为 ViewController 上的一个 UIView,如下图所示:
我将宽高比约束从 Storyboard拖到 ViewController 代码中,并命名为 aspectRatioConstraint
。
我希望在运行应用程序时紫色 View 的宽高比为 1:1,因此在 viewDidLoad 中我设置了 aspectRatioConstraint.constant = 1
(在运行宽高比之前为 343:128)
但是当我运行应用程序时没有任何反应。纵横比没有更改为 1:1,这里出了什么问题?
最佳答案
由于 multiplayer
是只获取属性,我们不能更改它的值,而是可以更改 constant
属性。
open var multiplier: CGFloat { get }
从约束菜单:
First Item = (Multiplier * Second Item) + Constant
View.Height = ((128/343) * View.Width) + 0
换句话说,343 = (0.373 * 128) + x
因为乘数必须从 0.373 更改为 1
(View.Height - 常数)/View.width = Multiplier
(343 - x)/128 = 1
x = 343 - 128
x = 215
aspectRatioConstraint.constant = 215
yourView.layoutIfNeeded()
关于ios - 为什么我的宽高比约束在以编程方式设置时未激活?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53043032/