如何使用自动布局相对于UIView高度移动UILabel?

时间:2015-07-02 21:00:40

标签: ios swift autolayout

我无法弄清楚如何使用自动布局相对于UIView高度重新定位UILabel。

实施例: 如果UIView的高度为50磅,UILabel位于距离顶部10个点和距离底部30个点的位置, enter image description here

如果UIView变为70点的高度,如何保持UILabel位置比率,更准确地说是从顶部获得20点,使用自动布局获得UILabel底部40点。

enter image description here

2 个答案:

答案 0 :(得分:2)

我所知道的唯一解决方案是添加一个单独的"间距"隐藏的视图。因此,如果您想在顶部保持相对20%的间距,则可以添加一个隐藏视图,其高度为10px,相对于超视图位于x:0 y:0。然后,通过将乘数设置为10/50(间隔视图的高度除以超视图的高度),将该视图的高度设置为相对于超视图。

然后将测试视图的垂直间距连接到间距视图的0px。布局更改后,不可见间距视图的高度随超视图而变化,并保持视图的相关Y位置。

我觉得这很愚蠢,我很少这样做,但我没有找到另一种适用于XCode 6的方法。

答案 1 :(得分:2)

假设您的标签高度为curl。将top标签​​约束设置为superview的centerY,如下所示: constraint screenshot

使用此配置,标签topY将为20的超级浏览高度1050,超视距高度为20。或者,您可以使用spacer views的概念 - 一个仅用于布局调整的不可见70实例,这是绝对正常的布局方式。在iOS9中,Apple引入了新的UILayoutGuide类,它基本上做同样的事情,但不消耗任何资源,比如图层等。