2 回答
TA贡献1815条经验 获得超6个赞
请注意,在iOS 9中,此技术将变得不必要,因为UIStackView将自动执行分发。我将添加另一个答案来解释它是如何工作的。
如何使用Autolayout执行均匀分布
单独在Interface Builder中执行此操作的最简单方法(而不是在代码中构造约束)是使用“spacer”视图:
绝对定位顶部和底部按钮。
在所有按钮之间放置间隔视图。使用约束将它们水平放置(水平居中最简单)并设置它们的宽度。
在每个按钮与其上方和下方的间隔视图之间进行约束,常数为0。
现在选择所有间隔视图并将它们的高度设置为相等。
第一个屏幕截图显示我在IB中进行设置:
我故意没有纠正“错位观点”,因为我希望你在我设计约束时看到它的样子。这是4英寸和3.5英寸屏幕的结果:
我把间隔视图留下了黑色,只是为了向您展示这种技术是如何工作的,但当然在现实生活中你会让它们变得透明,因而看不见!因此,用户只能看到您的按钮,均匀分布在任一屏幕高度上。
使用这种技术的原因是,尽管相等的概念执行了您所要求的值的分布,但约束只能在视图的各个方面之间应用相等; 因此我们需要额外的视图(间隔视图),以便我们可以使其他东西等于(这里是间隔视图的高度)。
其他方法
显然,更灵活的方法是在代码中分配约束。这可能听起来令人生畏,但有很多第三方代码可以帮助你,比如这类事情。
例如,如果我们有一个(可能是不可见的)上海华盈的高度作为一个边界,以决定我们的四个按钮的最大垂直分布,我们可以固定自己的上衣给上海华盈的有垂直中心constant
的0
,但一multiplier
中0.000001
,0.666667
,1.33333
,和2.0
分别(如果我们有四个按钮); 现在按钮将保持垂直分布,即使超视图根据屏幕高度或其他任何方式改变大小。[在Xcode 5.1中,可以在Interface Builder中进行设置,但在早期版本的Xcode中是不可能的。]
- 2 回答
- 0 关注
- 693 浏览
添加回答
举报