gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 07:50:01 27 4
gpt4 key购买 nike

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

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

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

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

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

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

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

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

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

为简单起见,假设您要创建一个标签,其顶部和底部各占 super View 高度的 10%,尾部和前导各占 super View 宽度的 10%。在纵向的 iPhone 上,标签上方和下方的填充比标签左右两侧的填充要多,就像这样(是的,它是按比例绘制的):
enter image description here

但假设在 iPad 上,它将以完美正方形的 View 显示。因此,周围的填充量将是相同的,如下所示:
enter image description here

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

最佳答案

有几种方法可以做到这一点。在最简单的情况下,您几乎已经明白了:如果您希望水平边界位于 10% 和 90%,那么您需要针对superview -- 所以 Subview.Trailing 锁定到 Superview.Trailing,乘数为 0.9,如您所说,然后是 Subview。 Leading 也锁定到 Superview.Trailing,只是乘以 0.1:

enter image description here

(顶部/底部也类似)

另一方面,您最后提到的情况稍微复杂一些:“指定一个标签的顶部应该比另一个标签的底部低 10%。”为此,您可能无法像前一种情况那样使用固定百分比的插图。相反,您可以在它们之间创建一个不可见的间隔 View :使用 Spacer.Height = 0.1 * Superview.Height 添加约束,然后将其附加在两个标签之间。 (您也可以使用这些间隔 View 处理前一种情况,但对于那种情况,它并不是真正必要的。)

关于ios - 了解自动布局中的乘数以使用相对定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26964139/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com