相关疑难解决方法(0)

了解自动布局中的乘数以使用相对定位

我试图了解如何利用自动布局相对于其他视图按百分比定位项目.

例如,我最近了解到,您可以使用以下命令指定视图的底部应比其superview的底部高出4%:

self.view.addConstraint(NSLayoutConstraint(item: label, attribute: .Bottom, relatedBy: .Equal, toItem: self.view, attribute: .Bottom, multiplier: 0.96, constant: 0))
Run Code Online (Sandbox Code Playgroud)

这对我来说很有意义,因为1的乘数会在视图的底部对齐它,因此您可以通过将乘数更改为0.96来将该数量减少4%.

但是你怎么能在另一个方向做同样的事情呢?你想指定一个标签的顶部应该从superview的顶部开始下降4%.如果您使用相同的行但是将属性更改为.Top,这意味着它将比superview的顶部高4%(但它实际上不会将其移出屏幕).你不能有一个我不认为的负乘数,而且我不相信大于1的值在常数为0时会做任何事情.所以你如何得到这个设置?

我有同样的问题来实现前导和尾随.尾随很容易.如果你想从右边10%:

self.view.addConstraint(NSLayoutConstraint(item: label, attribute: .Trailing, relatedBy: .Equal, toItem: self.view, attribute: .Trailing, multiplier: 0.9, constant: 0))
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为你拨回0.1或10%而不是完全对齐1.0.但你如何做同样的领导?我以为你可以设置标签相对于视图尾部的前导,然后将乘数设置为0.1.在我看来,这意味着标签将从最右边开始,然后被拨回90%,因此从左边获得所需的10%.但事实并非如此,我不确定为什么.

你能解释一下这是如何工作的,如何正确使用乘数来获得这些相对布局?

为了方便起见,假设您想要创建一个标签,该标签具有超视图高度的10%的顶部和底部,并且尾随并超过超视图宽度的10%.在iPhone的纵向上,标签上方和下方的填充比在左侧和右侧的填充更多,就像这样(是的,它是按比例绘制的):
在此输入图像描述

但是,让我们在iPad上说它将会在一个完美的正方形视图中显示出来.因此,填充将是相同的数量,如下所示:
在此输入图像描述

问题是如何将这些约束定义为动态值,而不是为常量设置固定值.我已经知道如何做到底部和尾随,但顶部和领先让我难过.我希望了解如何使用乘数来进行更高级的布局,例如,指定标签的顶部应该位于另一个标签底部下方10%,而不是将其设置为固定常量.

ios autolayout nslayoutconstraint

29
推荐指数
3
解决办法
3万
查看次数

标签 统计

autolayout ×1

ios ×1

nslayoutconstraint ×1