垂直StackView中缺少Y约束

时间:2016-12-02 13:53:38

标签: ios uistoryboard nslayoutconstraint uistackview

我有一个UITableViewCell,其中包含一个嵌入式UIStackView。一切正常,手机和iPad都很好看。但是,我在StoryBoard中遇到了很多奇怪的错误,我不知道是否可以忽略它们。通常,我讨厌忽视警告。但在这种情况下可以吗?我的表格单元格设置如下:

UITableViewCell
 - Content View
 -- View (named outerView)
 --- View (named dateView for top banner color)
 --- UIStackView (vertical, named mainStackView, pinned to neighbors)
 ---- UIButton (A)
 ---- UIView (B)
 ---- UIStackView (C, horizontal)
 ---- UIStackView (D, horizontal)
 ---- UILabel (E)
 ---- UIButton (F)

mainStackView(字母A-F)下的所有内容都在StoryBoard中显示错误,他们需要约束:Y位置或高度"。但是,根据Apple documentation,它表示如果UIStackView是垂直方向,它们将处理所有约束和垂直对齐。就像我说的,它工作正常,arrangeSubviews可以折叠/隐藏,没有其他警告。我只是不喜欢发布带有警告的代码。我该怎么做才能解决这个问题,或者这是一个已知的问题?

更新:以下是以下评论所要求的MCVE。单击here并解压缩该文件夹以获取仅适用于Interface Builder的裸骨项目。

2 个答案:

答案 0 :(得分:6)

我解决这个问题的方法是: 1.将主堆栈视图上的底部约束移除到SuperView的底部,以便仅固定3个侧面 或
2.降低表格单元的高度。虽然它是一个基于标签/按钮高度的动态高度单元格,但我想它仍然需要在界面构建器中的“正确”高度?

我不得不使用选项2,因为如果我选择了选项1,我的表格单元格就会消失,因为它不知道单元格的高度。同样值得重申的是,以前的代码仍然工作正常,它只是有编译警告。我不知道为什么没有其他人能看到它们尽管处于同一级别的xcode。现在试着让我的3天回来并在我的OCD上处理代码中的警告。

答案 1 :(得分:2)

我也遇到了与垂直堆栈视图类似的问题。 通过给任何子视图(在我的情况下是水平堆栈视图)提供高度约束并在构建时删除它来解决它的方式。 我也在你的MCVE上尝试了这个并且它有效。

注意:这肯定是一个黑客,但它解决了这个问题。