我有一个包含三个组件的 View 。在界面生成器中,我将所有三个设置为等宽。
在代码中,我想在某些情况下隐藏中间的组件,然后将其余两个组件展开以占用额外的空间。我试图将中间组件的宽度约束暴露给代码,然后将约束的“常量”属性设置为 0,但这是行不通的。
谁能告诉我是否有一种简单的方法可以实现我的目标?
谢谢
最佳答案
您是否考虑过将所有三个组件嵌入到 UIStackview 中? ?您可以将分布设置为 fillEqually,然后只使用 removeArrangedSubView 来执行您正在谈论的事情。不用担心约束。这是一个非常简单的示例(只需在 Storyboard 上添加堆栈 View 和按钮):
class ViewController: UIViewController {
@IBOutlet weak var stackView: UIStackView!
let view1 = UIView()
let view2 = UIView()
let view3 = UIView()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
stackView.distribution = .fillEqually
view1.backgroundColor = .red
stackView.addArrangedSubview(view1)
view2.backgroundColor = .green
stackView.addArrangedSubview(view2)
view3.backgroundColor = .blue
stackView.addArrangedSubview(view3)
}
@IBAction func remove(_ sender: Any) {
stackView.removeArrangedSubview(view2)
}
}
关于ios - 以编程方式扩展组件以进行自动布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49947137/