我为白色矩形( View )设置了右边距 - 1.008
现在我想设置 Top Margin - 1.1,但没有任何变化(无论我为 Multiplier 设置什么),白色矩形仍然位于黑色矩形的顶部,没有任何边距:
附注我不想使用常量(我想根据父 View 以百分比设置边距,似乎乘数是为此设计的)
更新(我想要的例子)
最佳答案
此处的自动布局按预期工作。你的问题是一个简单的数学问题。您的 superview top 位于 0,对于您的约束,这成立(阅读更多关于约束解剖 here ):
yourView.top = multiplier * superView.top + constant
填写值后:
yourView.top = 0 * 1.1 + 0
这很简单:
yourView.top = 0
在你的问题中,正确的间距有效,因为 superView.right
绝对大于 0(从我在图片上看到的,它接近于 UIScreen.main.bounds.width
)。
更新
为了得到你想要的,我通常会推荐使用 UILayoutGuide
,但是因为你正在使用 Storyboard(不支持它),你将不得不添加一个虚拟透明 UIView
.
获得你想要的布局需要看起来像这样(我使用 .red
颜色而不是 .clear
这样你就可以看到我想要的实现):
在这种情况下,您需要设置以下约束。我将使用编程方式设置它们,但我相信您可以轻松阅读它们并将它们转换为 Storyboard:
首先,将透明(在我看来是红色的)虚拟 View 约束到黑色 View - blackView 的右上角:
// by default constant = 0, multiplier = 1
dummyView.topAnchor.constraint(equalTo: blackView.topAnchor).isActive = true
// right or trailing, it's up to you
dummyView.rightAnchor.constraint(equalTo: blackView.rightAnchor).isActive = true
然后将dummyView
约束为一个完美的正方形(宽度等于高度):
// by default constant = 0, multiplier = 1
dummyView.widthAnchor.constraint(equalTo: dummyView.heightAnchor).isActive = true
保持whiteView
的右侧约束不变,并用它来确定dummyView
的大小:
dummyView.leftAnchor.constraint(equalTo: whiteView.leftAnchor).isActive = true
在此之后,dummyView
的大小将是 offset x offset
,因为它的左侧被限制为 whiteView.right
,而它的blackView.right
的右侧。
现在你完成了最后一个约束,它将 whiteView
从顶部正确定位:
whiteView.topAnchor.constraint(equalTo: dummyView.bottomAnchor).isActive = true
关于ios - 上边距(自动布局),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49045014/