【问题标题】:Autolayout: always gaps between views in the stack view, despite setting constraints to theTopView.bottom = theBottomView.top自动布局:堆栈视图中的视图之间始终存在间隙,尽管将约束设置为 theTopView.bottom = theBottomView.top
【发布时间】:2020-07-08 13:16:48
【问题描述】:

我是 Swift 新手,并尝试重复计算器应用程序作为学习的一部分,但卡在自动布局中。

这就是我所做的:

  1. 将每一行设置为水平堆栈视图,并将所有行一起设置为垂直堆栈视图。
  2. 将垂直堆栈视图分布设置为均等填充。
  3. 将每个水平堆栈视图的约束设置为 theTopView.bottom = theBottomView.top,反之亦然。
  4. 将每个水平堆栈视图中每个元素的约束设置为 element.Top = stakcView.Top, element.Bottom = stakcView.Bottom。

距离设置为 0 的间隙:

然而,水平堆栈视图之间总是存在间隙,尽管它们之间的距离显示为 0。

谁能告诉我我做错了什么?尽管这两者之间的距离显示为 0,但为什么会有差距?非常感谢您的帮助!

约束:

【问题讨论】:

  • 您的某个字段可能有边框。如果您设置“平等填充”,它将调整为最大对象的高度和宽度。它们之间没有空间,似乎是因为大小设置为与stackview中的所有视图相匹配。请注意,您的约束是 RED 解决了该问题,其余的将相对较快地变得清晰。
  • 另外,单击场景导航窗格顶部的红色小箭头。这将向您显示您在自动布局中的错误,让您有机会修复它。
  • @shim 你完全正确!边框被意外设置为 81。当我将其设置回 1 时一切都很好。我确实使用了红色箭头,但它的信息量不足以引导我找到答案。仍在学习如何有效地使用红色箭头。非常感谢您的帮助!

标签: swift autolayout


【解决方案1】:

UIStackView排列它的子视图。不要尝试在排列的子视图之间添加定位约束 - 这与您告诉堆栈视图要做的事情相反。

您需要确定您真正希望按钮的外观。

在这种情况下:

  • 0 标签包含在任何堆栈视图中。
  • 我为% 按钮设置了1:0.75 的纵横比。
  • “外部”垂直堆栈视图水平堆栈视图都设置为Fill Equally

以下是约束 - 3 种布局之间的唯一区别是:

  • 1-> 左图具有垂直居中的“外部”堆栈视图 - 没有顶部或底部约束。
  • 2-> 中心图像具有“外部”堆栈视图底部限制到视图底部(安全区域)。
  • 3-> 右图的“外部”堆栈视图 TOP 被限制在“0”标签的底部。

如果你想让按钮填满屏幕:

  • % 按钮中移除纵横比约束。
  • 外部堆栈视图的顶部被限制为标签底部,底部被限制为查看底部(安全区域)

【讨论】:

    【解决方案2】:

    感谢您的回答!

    虽然它们都提供了丰富的信息,但从根本上说,我的问题出在其他地方:无论约束常量设置为什么,堆栈视图之间总是存在神秘的间隙。

    例如设置为0

    Space between stackviews when set to 0

    然后设置为20000

    Space between stackviews when set to 20000

    然后我发现是空间设置被意外设置为大于1。当我将它设置为1时,神秘的差距消失了。

    enter image description here

    问题解决了。再次感谢您的帮助!

    【讨论】:

      【解决方案3】:

      尝试“填充”而不是“均等填充”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-20
        • 2019-05-13
        • 2019-09-19
        • 2021-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多