【问题标题】:Why is this Stack View layout ambiguous?为什么这个 Stack View 布局模棱两可?
【发布时间】:2016-02-11 15:45:00
【问题描述】:

我正在尝试使用 iOS 9 堆栈视图创建一个相对简单 (!) 的布局。这是故事板:

采用以下布局:

但它是模棱两可的:Titles Stack View: Need constraints for: X position or widthTimes Stack View: Need constraints for: X position or width。我不明白为什么。我已经将Titles Stack View的横向内容拥抱优先级设置为低于Times Stack View,我还需要做什么?

【问题讨论】:

  • 有时,您视图中的堆栈需要了解更多信息。在向堆栈视图添加约束方面,我发现从外向内工作是最容易的。从顶部开始,向内工作。您可能需要固定子堆栈或给他们更多信息:“做什么”。作为指导原则,从外向内工作,在约束方面“少即是多”。
  • 只是观察您的布局,我会查看您的开始时间和结束时间堆栈。我会配置它们来填充堆栈。结束标签和框架前缘之间似乎有一些空间......我怀疑这是你警告的起源。
  • 我不认为是@AdrianB,它们设置为“平等居中”,这会稍微推动End 标签。将它们设置为 Fill Equally 没有帮助。

标签: ios uistackview


【解决方案1】:

我的Times Stack View 对齐设置为Trailing,将其设置为Fill 解决了问题。

(尽管无论我做什么,Xcode 都会显示一些错误的视图,但我将其视为错误)

【讨论】:

  • 应该选择这个作为答案,因为填充剩余空间可以消除 x 轴约束问题。
【解决方案2】:

无需忍受放错位置的视图或不能完全满足您的需求的堆栈视图。试试这个:将“标题 1”标签上的内容拥抱优先级提高到 252。我敢打赌,这会成功。如果不是,请将其设置回 251 并稍微修改一下其他标签上的内容拥抱优先级(可能还有抗压性)。不要为它发疯。对一个或两个标签进行一点调整应该会给您想要的结果。

【讨论】:

  • 谢谢爱德华!!扩展一点,基本上,这背后的想法是: UIStackView 可以根据其内容(取决于您设置约束的方式)具有可变大小,如果是这种情况,那么子子视图应该具有有效的、明确的内在内容尺寸。当我的内容视图的标签为空时,我遇到了这个问题,并且为它们设置定义的高度约束就可以了!
  • 我的情况与问题相同(一个水平 StackView 中有 2 个嵌套的垂直 StackView),设置优先级对消除歧义没有效果
猜你喜欢
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 2018-05-28
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多