Interface Builder中的“宽度等于高度”约束


92

我找不到创建“正方形”约束的方法,这意味着在Interface Builder中“宽度等于高度”。我猜有可能通过编程添加这种约束。我可以在IB做些什么吗?也许我只是看不到?看起来微不足道,但我找不到。


我记得彼得·阿蒙(Peter Ammon)在WWDC'12中谈论过“尽可能依靠Interface Builder”。多么讽刺。
DemoniacDeath

4
是的,我认为布局约束的实现仍然缺少一些东西。似乎它们使我们可以访问大多数参数,但不能访问乘数,这对很多事情很有用。
rdelmar

但是它越来越好了!我的意思是不到3年前就推出了Auto Layout,从我的角度来看,如今的支持非常好。
卢卡斯·库巴内克

Answers:


187

更新Xcode 5.1b5

宽度等于高度

按住Ctrl键并单击并从视图中拖动,然后在指针悬停在视图上方时松开。选择“纵横比”。它将创建一个约束,其中第一项和第二项是视图。


在Xcode 5.1之前

您不能因为宽度/高度编辑器缺少与另一个属性或设置比率相关的字段:

宽度约束

因此,您不能在Interface Builder中表达以下代码:

CGFloat ratio = 1.0;
NSLayoutConstraint *constraint = [NSLayoutConstraint
    constraintWithItem:myView
    attribute:NSLayoutAttributeWidth
    relatedBy:NSLayoutRelationEqual
    toItem:myView
    attribute:NSLayoutAttributeHeight
    multiplier:ratio
    constant:0];
constraint.priority = 1000;
[myView.superview addConstraint:constraint];

1
感谢您的最新更新。Xcode 5.1 beta 5实际上允许您在IB中设置纵横比约束,但是当我尝试编译项目时,出现以下错误:5.1之前的Xcode版本的纵横比约束。因此,也许我们必须等待最终的5.1版本。对你也一样,@ Jano?
卢卡斯·库巴内克

是的,对XIB的更改不向后兼容。如果使用5.1进行编辑,则无法返回到较低版本。
Jano 2014年

这样您就可以编译xib?即使对我来说,它也无法使用Xcode 5.1 beta 5。
Lukas Kubanek 2014年

1
@ onmyway133在两个视图之间创建约束,并将乘数设置为1:2。
Jano 2014年

3
在Xcode 7中,按住Ctrl键并单击鼠标,然后从视图中拖动鼠标并在其顶部释放,然后选择“显示比例”
inorganik

1

请在图像中的UI元素上添加一个新的约束,将宽高比设为1:1。

将长宽比设置为1:1


0

首先,控制从按钮向自身的对角线拖动。将出现一个上下文菜单,您可以在其中添加宽​​度和高度约束。Shift +单击每个;将会出现一个选中标记,表明您已添加约束。(如果您在添加两个对话框之前不小心关闭了对话框,可以的,只需重复拖动步骤并设置另一个对话框即可):

在此处输入图片说明

首次添加时,这些约束采用按钮的当前宽度和高度,因此您需要调整每个约束以为其提供更合适的值。尽管我们的图像是正方形的,但我们必须一次执行一次,因此请确保在两个约束中使用相同的常数值来按比例调整按钮的大小。双击约束,然后在其常量字段中输入一个较小的值:

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.