首页 > 解决方案 > 以编程方式快速更改纵横比约束

问题描述

我们有一个带有 aUIButtonUIView foo的 MainStoryBoard有 4 个约束:

按钮的期望行为应该是它改变了 foo 约束,因此 foo 将扩展到全屏,如果再次按下它应该具有之前的纵横比 16:9。

我尝试按照IBOutlet以下步骤使用约束来执行此操作:

我也玩过高度,什么都没有。提前致谢。

标签: iosswiftautolayout

解决方案


您的初始约束应如下所示。

NSLayoutConstraint.activate([
    foo.leadingAnchor.constraint(equalTo: superView.leadingAnchor),
    foo.trailingAnchor.constraint(equalTo: superView.trailingAnchor),
    foo.topAnchor.constraint(equalTo: superView.topAnchor)
])

let collapsedConstraint = foo.heightAnchor.constraint(equalTo: foo.widthAnchor, multiplier: 9/16)
let expandedConstraint = foo.bottomAnchor.constraint(equalTo: superView.bottomAnchor)
collapsedConstraint.isActive = collapsed
expandedConstraint.isActive = !collapsed

触发的方法应该像这样改变约束。

@objc func tapAction() {
    collapsedConstraint.isActive = collapsed
    expandedConstraint.isActive = !collapsed
    superView.layoutIfNeeded()
}

推荐阅读