iOS - 与自动布局成比例的间距

时间:2015-01-11 00:31:15

标签: objective-c xcode swift autolayout constraints

我尝试使用界面构建器创建完美的缩放视图。到目前为止,一切都很好。我以编程方式缩放字体,按钮等。唯一的问题是元素之间的约束(间距)保持不变。我想避免为间距限制创建出口,因为它看起来很乱。我希望元素之间的间距保持成比例,因为我拉伸元素。现在,所有内容都根据屏幕的左侧对齐。如果我伸展我的视线,一切都保持左对齐。我希望它按比例分开。我该如何实现这一点(最好使用界面构建器)?

enter image description here

2 个答案:

答案 0 :(得分:12)

虚拟观点???你肯定是在逗我。如果那是Apple推荐的 - 那么我就不会非常尊重他们。

您正在寻找的是中央水平(中心X对齐)约束,然后您只需要使用乘数,同时将常数保持为0:

enter image description here

乘数从0到2

1 will place the center of the subview at the center of the superview.
0 will place the center of the subview at the left edge of the superview.
2 will place the center of the subview at the right edge of the superview.
0.5 will place the center of the subview at 25% through the superview.
1.5 will place the center of the subview at 75% through the superview.

摆脱所有这些水平空间限制。并且总是考虑乘数 - 约束的常数应始终设置为0。

Apple痴迷于原生分辨率 - 他们不希望您的设计在不同的屏幕尺寸上进行缩放。拧紧它们。一路缩放分辨率。

答案 1 :(得分:11)

注意 - 这是一种粗略的做法。

我遇到了类似的问题并通过在我的对象之间添加虚拟视图来解决它,以表示它们之间的间距。您可以将虚拟视图约束为与其余视图成比例缩放,这将使对象之间的间距与整体大小正确缩放。我设置了虚拟视图的隐藏属性,因此它们不会显示出来(注意 - 它们在被隐藏时仍能正确布局)。

希望有所帮助。

修改

这种方法不完美(你必须用无关的视图来弄乱IB),但像@sha说这似乎是完成它的唯一方法。 事实证明,其他人一直在提供类似的建议。我偶然发现了这些可能有用的参考资料:

AutoLayout to keep view sizes proportional

AutoLayout: layout consistency with proportional element spacing with 3.5" and 4" screens