【问题标题】:Stack View constrained to margins leaves no marginStack View 被限制在边距上,没有边距
【发布时间】:2019-01-09 01:54:34
【问题描述】:

我遇到了一些我不知道如何解决的问题... 我正在学习一些有点旧的课程(它们是在 Swift 3 中完成的),但我遇到了约束和边距问题。我只是在学习课程,它说对于该堆栈视图,我需要设置以下约束:

向堆栈视图添加约束后,我得到了以下结果:

这是我预期的结果:

所以我的问题是为什么堆栈视图超出边距,以及如何解决它。 (提醒课程是在 Swift 3 中,他们在页边距内获得了堆栈视图)

【问题讨论】:

  • 您在前导边距中添加了 0 的约束,您实际期望的是什么?
  • 我期待这个结果ibb.co/izWn6K
  • 我想我知道你想要什么。请取消选中“约束到边距”,然后添加(选择)新约束。
  • 已经试过了,但还是一样,我正在考虑这个边距ibb.co/jPLmGK
  • 你的预期结果和上面的截图有什么区别???

标签: ios xcode autolayout margins stackview


【解决方案1】:

是的。这很令人困惑。选择限制到边距用于在两侧留出空隙。现在,当您选择 Constrain to margins 时,它会将您的视图限制在 Safe Area 但当 constant 为 @ 时,视图会延伸到两侧987654321@.

要修复它,请更改前导和尾随约束:

  1. 打开前导约束。点击Safe Area.leading,在弹出的窗口中选择Superview
  2. 现在点击Superview.leading并选择相对于边距并将常量设置回0

对尾随约束重复此操作。


替代解决方案

或者,您可以将视图限制在安全区域,只需将常量设置为16(或-16,具体取决于项目的顺序在约束中)。

【讨论】:

  • 奇怪! 1.这不是bug吗?或者它以某种方式设计? 2.通过代码做的时候也一样吗?还是故事板上只有这样?
  • @Honey,如果他们要改变它的作用,限制到边距应该改为限制到安全区域,恕我直言。
  • 谢谢。不明白你对我的第二个问题的回答。如果在代码中我使用常量0 约束边距,它会被约束到边距还是被约束到视图的锚点本身,即它会像故事板一样工作?
  • @Honey,给我一个例子,说明如何在代码中使用常量 0 限制边距。
  • @Honey,在代码中工作。我认为问题仅仅是 Interface Builder 如何解释 Constrain to margins。它确实将其视为限制到安全区域,并且答案中列出的修复将其恢复为以前的行为方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 2010-11-17
  • 2014-02-24
相关资源
最近更新 更多