Swift 以编程方式更改纵横比约束值

Swift 以编程方式更改纵横比约束值,swift,ios-autolayout,Swift,Ios Autolayout,我正在使用AutoLayout进行应用程序设计。对于我的一个HeaderView,我已经使用AspectRatio设置了它的高度 现在,当主视图不包含任何数据时,HeaderView高度应为0,当添加数据时,应再次将其设置为原始纵横比 我们可以在改变任何约束的常量值时改变纵横比吗。我尝试了下面的代码,但它不能正常工作 @IBOutlet weak var constOptions_Height: NSLayoutConstraint! if arrData.count == 0 { co

我正在使用AutoLayout进行应用程序设计。对于我的一个HeaderView,我已经使用AspectRatio设置了它的高度

现在,当主视图不包含任何数据时,HeaderView高度应为0,当添加数据时,应再次将其设置为原始纵横比

我们可以在改变任何约束的常量值时改变纵横比吗。我尝试了下面的代码,但它不能正常工作

@IBOutlet weak var constOptions_Height: NSLayoutConstraint!
if arrData.count == 0 {
    constOptions_Height.constant = 0.0
}
else{
    constOptions_Height.constant = 50.0
}

您可以使用以下方法

给出两个约束条件。一个用于纵横比,另一个用于高度

使这两个动作交替进行

constOptions_Aspect.isActive = false
constOptions_Height.isActive = true 

在高度不变的情况下,可以将高度设为零

您可以使用以下方法

给出两个约束条件。一个用于纵横比,另一个用于高度

使这两个动作交替进行

constOptions_Aspect.isActive = false
constOptions_Height.isActive = true 

在高度不变的情况下,可以将高度设为零

我认为你需要改变乘数值,而不是常数。constOptions\u Height.multiplier=cgfloatValue@Rishabh乘数是一个仅获取的属性。然后您可以尝试重新创建该约束以修改乘数,就像我们指定帧来改变视图的位置一样。或者简单地从代码而不是故事板创建约束。还要检查这个:我认为你需要改变乘数值,而不是常数。constOptions\u Height.multiplier=cgfloatValue@Rishabh乘数是一个仅获取的属性。然后您可以尝试重新创建该约束以修改乘数,就像我们指定帧来改变视图的位置一样。或者简单地从代码而不是故事板创建约束。同时检查此项:实际上,如果它的优先级低于
constOptions\u Height
,则不必更改
constOptions\u Aspect
。例如,如果
constOptions\u Aspect
具有优先级
999
constOptions\u Height
具有优先级
1001
,则设置
constOptions\u Height.isActive=true
就足够了。是的。通过不同的优先级,我们也可以实现相同的效果。谢谢@mohammaddiq。实际上,如果
constOptions\u Aspect
的优先级低于
constOptions\u Height
,您不必更改它。例如,如果
constOptions\u Aspect
具有优先级
999
constOptions\u Height
具有优先级
1001
,则设置
constOptions\u Height.isActive=true
就足够了。是的。通过不同的优先级,我们也可以实现同样的目标。谢谢@mohammaddadiq。