我无法弄清楚如何使用自动布局相对于UIView高度重新定位UILabel。
实施例: 如果UIView的高度为50磅,UILabel位于距离顶部10个点和距离底部30个点的位置,
如果UIView变为70点的高度,如何保持UILabel位置比率,更准确地说是从顶部获得20点,使用自动布局获得UILabel底部40点。
答案 0 :(得分:2)
我所知道的唯一解决方案是添加一个单独的"间距"隐藏的视图。因此,如果您想在顶部保持相对20%的间距,则可以添加一个隐藏视图,其高度为10px,相对于超视图位于x:0 y:0。然后,通过将乘数设置为10/50(间隔视图的高度除以超视图的高度),将该视图的高度设置为相对于超视图。
然后将测试视图的垂直间距连接到间距视图的0px。布局更改后,不可见间距视图的高度随超视图而变化,并保持视图的相关Y位置。
我觉得这很愚蠢,我很少这样做,但我没有找到另一种适用于XCode 6的方法。
答案 1 :(得分:2)
假设您的标签高度为curl
。将top标签约束设置为superview的centerY,如下所示:
使用此配置,标签topY将为20
的超级浏览高度10
和50
,超视距高度为20
。或者,您可以使用spacer views的概念 - 一个仅用于布局调整的不可见70
实例,这是绝对正常的布局方式。在iOS9中,Apple引入了新的UILayoutGuide类,它基本上做同样的事情,但不消耗任何资源,比如图层等。