基本上,您需要限制四件事:
- 您的子视图到其父视图的前导空间为零
- 您的子视图与其父视图的顶部空间为零
- 子视图的宽度等于其父视图的宽度
- 子视图的高度等于其父视图的宽度
如果视觉约束不适合您,您可以在代码中单独构建这四个约束。使用该方法+constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:
constant:
指定不同视图属性之间的确切关系。例如,上面的约束 #1 可以表示为:
[NSLayoutConstraint constraintWithItem:mySubview
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:mySuperview
attribute:NSLayoutAttributeLeading
multiplier:1.0f
constant:0.0f]
#3 可能是:
[NSLayoutConstraint constraintWithItem:mySubview
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:mySuperview
attribute:NSLayoutAttributeWidth
multiplier:1.0f
constant:0.0f]
一旦你建立了这四个约束,你可以根据需要将它们添加到你的超级视图中。
请注意,有多种方法可以达到与上述相同的效果:
- 您可能会限制尾随空间和底部空间而不是宽度和高度
- 您可能会限制中心 X和中心 Y而不是前导和顶部空间
您也可以在视觉表示中提出相同的约束,如 Peter Hosey 的回答。例如,等宽约束可能看起来像@"[mySubview(==mySuperview)]"
适当的视图字典。
请记住,Auto Layout Guide包含大量有关约束的信息,包括在出现问题时如何调试它们。