实现与Autolayout约束的百分比重叠

时间:2016-05-09 17:32:50

标签: ios ios-autolayout

假设View1和View2是两个大小相同的矩形。使用自动布局,我可以设置View1.Center X = View2.Leading,使View1和View2在X方向中途重叠。现在我需要这个重叠是一个不同的百分比,比如重叠1:3或任何其他分数。如何通过Autolayout约束来实现这一目标?

2 个答案:

答案 0 :(得分:2)

它不像设置view2导致view1的中心X那么简单,但你可以通过在运行时调整前导约束的constant属性来做到这一点,最好是在view1的width的确切位置。集。

首先view2.leading == view1.trailing

leadingConstraint = NSLayoutConstraint(item: view2, attribute: .Leading, relatedBy: .Equal, toItem: view1, attribute: .Trailing, multiplier: 1.0, constant: 0.0)

然后,根据您定义视图(在视图或视图控制器中)的位置,在所有视图布局后立即更新有问题的约束常量:

override func viewDidLayoutSubviews() {
  super.viewDidLayoutSubviews()
  leadingConstraint.constant = -(view1.frame.width / 3.0)
}

enter image description here

您可以下载我为您创建的the sample project并使用它来更好地理解。

答案 1 :(得分:0)

最后,我创建了一个不可见的视图,该视图的宽度与view1的宽度成比例。然后将view2设置为相对于不可见视图。通过更改我选择的比例,我可以达到我需要的任何百分比,包括1/2或1/3。