自动布局中的弹簧:在Xcode 5中使用约束均匀分布视图

我理解在Interface Builder中对齐,调整大小和分发视图的旧Struts和Springs方法。但是,我似乎无法弄清楚如何使用Xcode 5使用自动布局均匀分布视图。有一种方法可以使用Xcode 4,但该选项已经消失。


我有7个按钮排列在垂直堆栈中。在3.5英寸的布局上,它看起来很棒。当我在4英寸布局中预览屏幕时,所有按钮都保持紧密排列,并且最后一个按钮下方有大量空间。


我希望它们保持相同的高度,但我希望它们之间的空间能够弯曲,以便它们可以在屏幕上展开。


在此输入图像描述


我已经能够使按钮的高度弯曲并填充空间,但这不是我想要的行为。我想学习如何使用自动布局来替换旧的Springs行为,但我似乎无法通过Interface Builder找到任何方法。


我可以使用顶部按钮,它可以是顶部边缘的固定空间,也可以是顶部边缘的比例空间,同样适用于底部按钮和底部边缘。那些对我来说不那么重要,我也很擅长。


但我真的需要弄清楚如何在视图中的每个项目之间均匀分配额外的空间。


白板的微信
浏览 694回答 2
2回答

红糖糍粑

请注意,在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中是不可能的。]
打开App,查看更多内容
随时随地看视频慕课网APP