在Swift中,如何使用布局定位将多个子视图设置为具有相同的宽度(无常量)?
例如,我有一个包含3个子视图的父视图。我使用布局锚编程,并试图实现以下布局在Swift中,如何使用布局定位将多个子视图设置为具有相同的宽度(无常量)?,swift,autolayout,interface-builder,layout-anchor,Swift,Autolayout,Interface Builder,Layout Anchor,例如,我有一个包含3个子视图的父视图。我使用布局锚编程,并试图实现以下布局 |--subview 1--|--subview 2--|--subview 3--| 三个子视图中的每一个子视图都具有相同的宽度。换句话说, subView1.width=subView2.width=subView3.width 子视图1.width+subView2.width+subView3.width=parentView.width 我知道我可以使用乘数将子视图1和子视图2的宽度设置为: subView1
|--subview 1--|--subview 2--|--subview 3--|
三个子视图中的每一个子视图都具有相同的宽度。换句话说,
subView1.width=subView2.width=subView3.width
子视图1.width+subView2.width+subView3.width=parentView.width
我知道我可以使用乘数将子视图1和子视图2的宽度设置为:
subView1.widthAnchor.constraintEqualToAnchor(contentView.widthAnchor, multiplier: 1/3).active = true
subView2.widthAnchor.constraintEqualToAnchor(contentView.widthAnchor, multiplier: 1/3).active = true
并且子视图3的前导定位点可以与子视图2的尾随定位点对齐
然而,我在某个地方看到,Interface Builder实际上可以直接将这三个宽度指定为相等(而不使用常量或乘数)。是否可以通过编程方式对布局锚执行相同操作?怎么做?谢谢。以下是完整的锚定套件(我自己也试过,效果不错):
希望这有帮助。:) 你确定它有效吗?还是只是一个尝试的建议?这是一个建议。你试过了吗?很明显,在我问这个问题之前,我也试过了。也许我遗漏了什么,所以如果你有一个完整且有效的答案,请编辑你的答案。@JoeHuang我已经用完整的锚更新了我的答案。我自己也试过,效果不错。谢谢,效果不错。我错过了子视图1和2的拖曳锚定设置。我以为我会处理好的。
// Create subView1
let subView1 = UIView()
subView1.backgroundColor = UIColor.redColor()
subView1.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(subView1)
// Create subView2
let subView2 = UIView()
subView2.backgroundColor = UIColor.blueColor()
subView2.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(subView2)
// Create subView3
let subView3 = UIView()
subView3.backgroundColor = UIColor.greenColor()
subView3.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(subView3)
subView1.leadingAnchor.constraintEqualToAnchor(contentView.leadingAnchor).active = true
subView1.topAnchor.constraintEqualToAnchor(contentView.topAnchor).active = true
subView1.bottomAnchor.constraintEqualToAnchor(contentView.bottomAnchor).active = true
subView2.topAnchor.constraintEqualToAnchor(contentView.topAnchor).active = true
subView2.bottomAnchor.constraintEqualToAnchor(contentView.bottomAnchor).active = true
subView3.topAnchor.constraintEqualToAnchor(contentView.topAnchor).active = true
subView3.trailingAnchor.constraintEqualToAnchor(contentView.trailingAnchor).active = true
subView3.bottomAnchor.constraintEqualToAnchor(contentView.bottomAnchor).active = true
subView1.trailingAnchor.constraintEqualToAnchor(subView2.leadingAnchor).active = true
subView2.trailingAnchor.constraintEqualToAnchor(subView3.leadingAnchor).active = true
// Add equal width anchors
subView1.widthAnchor.constraintEqualToAnchor(subView2.widthAnchor).active = true
subView2.widthAnchor.constraintEqualToAnchor(subView3.widthAnchor).active = true