【问题标题】:Trailing constraint of a component equals to its leading constraint组件的尾随约束等于其前导约束
【发布时间】:2017-03-24 08:57:35
【问题描述】:

我有以下组件:

无论屏幕大小如何,我想要做的是使右侧视图的前导和尾随约束具有相同的大小。

我想添加两个视图作为占位符。第一个从主视图的左边缘开始,到橙色大方块的中间结束。而对于第二个,从大橙色方块的中间开始,到主视图的右边缘结束。然后两个小橙色方块将在内部居中对齐。

但我想知道是否有更好的方法,无论是通过代码还是使用 Interface Builder。

【问题讨论】:

  • 您可以使用水平堆栈视图,否则我将使用两个具有相同宽度约束的填充视图。
  • 在我的情况下,堆栈视图并不适合,因为大橙色方块没有被剪裁到边界。那么让尾随和前导约束相等是不可能的?
  • 大橙没有被剪裁到边界?但是,如果我理解你想要做什么,你想让间距考虑溢出吗?所以中心视图可能是 40x40,但大橙色正方形可能是 100x100?而且,你想要左右两边的间距,还是只在右边?
  • @Paulw11 - 你不能真正使用堆栈视图,因为它只会在排列的视图中居中/间隔,而不是堆栈视图的边缘。 (这是堆栈视图的真正限制,恕我直言。)从技术上讲,您可以使用堆栈视图,但是您必须在堆栈视图的末尾(如果他想要很好地间隔开的话,大概是开头)添加一个额外的零宽度视图排列的视图。但它正在迅速接近我们在引入堆栈视图之前使用的隐藏填充/间隔视图的丑陋。
  • @Rob constraints are defined using the attributes of views, but cannot not be defined in relation to other constraints 实际上是我需要知道的。感谢您的链接。我通过在大矩形的每一侧添加两个相同宽度的视图并将小的视图分别放置在每个视图的中心来解决了我的问题。

标签: ios swift interface-builder nslayoutconstraint


【解决方案1】:

我认为你可以通过将大橙色和左侧视图之间的约束的优先级设置为高或低来实现这一点

并且需要优先引导和交易到右侧的视图。

【讨论】:

  • 不,那样不行。无论如何,似乎不可能以“适当”的方式。
【解决方案2】:

也许我错过了什么,但为什么不简单:

  • 将蓝色引脚指向 BigOrange 尾随
  • 将蓝色尾随固定到 SuperView
  • 将 LittleOrange 居中于 Blue...

并在运行时将蓝色变为透明。

【讨论】:

  • 这就是我所说的,但我想知道是否有更好的方法(更清洁):)
猜你喜欢
  • 1970-01-01
  • 2021-09-23
  • 2023-03-30
  • 2019-01-02
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-18
相关资源
最近更新 更多