从单元格中删除子视图以进行自动布局问题

时间:2014-06-09 13:32:48

标签: ios uitableview autolayout nslayoutconstraint

当不应显示视图时,删除Cell的自动布局约束的最佳方法是什么?

我们有一个单元格,其布局大约有6-7个视图。其中一个观点是星级。当星级评分不可用时,我们不想显示视图。目前我们隐藏视图但这会留下自动布局约束。

类似的问题 - How to use auto-layout to move other views when a view is hidden?

enter image description here

这是上面提到的有问题的观点。理想情况下,如果没有可用的星级,我们会从其超级视图中删除此视图。我们遇到的问题是,如果我们从removeFromSuperview中的超级视图cellForRow...中移除视图,则下一个单元格会受到影响,因为视图不会再次添加。

3 个答案:

答案 0 :(得分:0)

(我会评论要求澄清,但还没有声誉。)

您是否有机会隐藏相关单元格的视图?

如果我理解您的意思,那么您建议在创建新单元格时从其超级视图中删除相关视图会产生问题。因此,当您将新单元格出列时,只需检查您的星号计数属性,如果下一个单元格的值为> 0,则显示该单元格的视图。

另一个选项是将周围视图固定到其父视图,而不是将它们固定到要删除的视图。这样,当您删除星级视图时,周围视图的布局约束保持不变。

答案 1 :(得分:0)

记住变量中的约束(用于显示/隐藏视图)并删除它约束。 如果需要更改视图,请删除此约束并替换为新约束。

例如:

视图显示widthheight 并替换约束,其中widthheight对于隐藏视图将为零。

答案 2 :(得分:0)

我找到的最佳路线是创建单独的单元格布局,并根据信息是否可用来决定使用哪种布局。这意味着在IB中创建第二个原型单元而没有相关视图和不同的约束但是按预期工作。对此有其他建议。