ios - 上边距(自动布局)

标签 ios autolayout

我为白色矩形( View )设置了右边距 - 1.008

enter image description here

现在我想设置 Top Margin - 1.1,但没有任何变化(无论我为 Multiplier 设置什么),白色矩形仍然位于黑色矩形的顶部,没有任何边距:

enter image description here

附注我不想使用常量(我想根据父 View 以百分比设置边距,似乎乘数是为此设计的)

更新(我想要的例子)

enter image description here

最佳答案

此处的自动布局按预期工作。你的问题是一个简单的数学问题。您的 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 这样你就可以看到我想要的实现):

enter image description here

在这种情况下,您需要设置以下约束。我将使用编程方式设置它们,但我相信您可以轻松阅读它们并将它们转换为 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/

相关文章:

ios - 在 viewDidLoad 中调用时 Firebase 观察者未观察到数据库更改

ios - NSNumberFormatter setFormat 错误

objective-c - 在保持自动布局约束的同时替换 NSView

ios - Xcode - 接收器类型 'BFTask' 例如消息是前向声明

ios - AFNetworking 使用 URL 设置 UITableViewCell 的 imageView 图像,设置图像后 imageview 框架仍然为 0

ios - 使用自动布局约束 swift 2.1 从中心到顶部为 UIView 设置动画

ios - 如何使标签与屏幕尺寸成比例?

ios - UIStackView 竞争条件?

ios - 如何在自动布局中将标签垂直居中在两个其他标签之间

ios - 使用自动布局增加 ScrollView 中的 View 高度