Y在垂直StackView中缺少约束

问题描述:

我有一个UITableViewCell,它内嵌了一个UIStackView。一切正常,在手机和iPad上看起来不错。但是,我在StoryBoard中发现了很多奇怪的错误,我不知道我是否可以忽略它们。通常,我讨厌忽略警告。但在这种情况下可以吗?我的表格单元格设置如下:Y在垂直StackView中缺少约束

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)都显示故事板的错误,他们“*约束:Y位置或高度”。然而,每个苹果documentation也表示,他们将处理所有的约束和垂直对齐如果UIStackView是垂直方向。就像我说的那样,它可以正常工作,排列的子视图可以折叠/隐藏,并且没有其他警告。我只是不喜欢发布带有警告的代码。我能做些什么来解决这个问题,还是一个已知的问题?

更新:这是根据下面的评论请求的MCVE。点击here并解压该文件夹以获取只能在Interface Builder中工作的裸骨项目。

+0

我不能的你与我们分享什么样的基础上重现您的问题。如果我们无法重现您的问题,则很难解决问题。也许你可以创建一个[MCVE(http://*.com/help/mcve),即以空白项目开始,然后添加一个表视图和细胞再现您所描述的警告。然后你可以和我们分享这个项目。 – Rob

+0

@Rob - 我更新,它包括MCVE –

+0

您是否获得编译时警告或运行时的警告?我在Xcode 8.1中没有编译时间警告(8B62)。当我试图运行此,显然你没有包含一个视图控制器或单元格类,但是当我说这些,它工作得很好,虽然以避免运行时的警告,我已经把在'的viewDidLoad'以下行' UITableViewController'的子类:'self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimatedRowHeight = 222;'。 – Rob

我解决这个问题的方法是要么:
1.在主堆栈视图到的SuperView的底部,所以只有3个侧面完全寄托卸下底部约束。

2.降低表格单元的高度。虽然它是基于标签/按钮高度的动态高度单元格,但我认为它仍然需要在界面构建器中处于“正确”高度?

我不得不使用选项2,因为如果我做了选项1,我的表格单元消失了,因为它不知道如何使用单元格的高度。还值得重申的是,代码仍然正常工作,它只是编译警告。我不知道为什么没有人能够看到他们,尽管他们在同一层xcode。现在,我试着让自己的3天时间回到工作岗位上,并在代码中发出警告。

我也有垂直堆栈视图类似的问题。 我给予高度约束任何子视图(在我的情况下水平堆叠视图),并在构建时删除它解决它的办法。 我也试过这个在你的MCVE上,它工作。

注意:这当然是黑客,但它解决了问题。