Stackview中的iOS 10 square UIIMageView在隐藏时会破坏Autolayout

时间:2017-05-17 13:44:29

标签: ios autolayout nslayoutconstraint ios-autolayout uistackview

我有一个UITableViewCell,我认为这是一个非常简单的布局。主要内容是UIStackView(水平)。在其中我有UIImageView和两个UILabel。在UIImageView上我有2个约束。一个是宽高比为1:1,使其为正方形,另一个是高度约束为55个点。 UIStackView被固定到单元格contentView的所有方面。

现在,当我没有在UIImageView中显示UIImage时,我只需调用imageView.isHidden = true并且UIStackView隐藏图像。同时,在控制台上我看到AutoLayout中断了。它告诉我它不能满足55的高度和宽度为0.

很有意义,因为由于宽高比,UIImageView也希望宽度为55。但是,在设备本身上我没有看到任何奇怪的故障。它完全符合我的预期。

所以问题是

这是一件坏事吗?如何用最少量的代码解决这个问题?

顺便说一下,我使用动态高度自我调整UITableView并让AutoLayout确定我的单元格的高度。可能会发生UIImageView是该单元格的唯一内容。

1 个答案:

答案 0 :(得分:0)

它不是一个错误StackView为它添加了约束条件。当您在视图中调用隐藏时,在您的情况下是 imageView 。 stackView尝试将高度Constraint设置为0,但是您添加的高度约束与stackView添加的高度约束冲突。

您可以将高度限制的优先级更改为小于1000的值,以解决冲突问题