Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Swift中,如何使用布局定位将多个子视图设置为具有相同的宽度(无常量)?_Swift_Autolayout_Interface Builder_Layout Anchor - Fatal编程技术网

在Swift中,如何使用布局定位将多个子视图设置为具有相同的宽度(无常量)?

在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

例如,我有一个包含3个子视图的父视图。我使用布局锚编程,并试图实现以下布局

|--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