使用Autolayout时无法在UICollectionViewCell中隐藏或删除视图

时间:2015-04-03 07:33:07

标签: ios cocoa-touch autolayout uicollectionview uicollectionviewcell

我在UICollectionViewCell中有一个UIImageView(让我们称之为 myImageView ),并且有必要的约束。我正在使用故事板并将视图和代码与viewWithTag链接起来。

在cellForItemAtIndexPath中,有一个条件,例如:

if (1 + 1 == 2)
    myImageView.hidden = YES;
else
    myImageView.hidden = NO

我已设置断点并验证代码已执行,但 myImageView 并未隐藏第一批可见单元格(假设所有这些单元都满足条件)。

当我向下滚动以显示新的(或重复使用的)单元格时,一切都按预期工作(满足条件并假设隐藏的单元格被隐藏,反之亦然)。当我向上滚动以再次显示第一批单元格时,它也可以正常工作。

问题仅在于第一批可见细胞。

我尝试过removeFromSuperview而不是隐藏细胞,但也没有运气。

在这种情况下使用autolayout和UICollectionViews时是否有正确的方法或最佳做法?

1 个答案:

答案 0 :(得分:0)

由于我们无法将标记设置为约束,因此我们别无选择,只能将UICollectionViewCell子类化并将约束链接到IBOutlet。

然后在cellForRowAtIndexPath

cell.imageViewHeightConstraint.constant = imageViewShouldHide ? 0 : cell.imageView.image.size.height;

简单地说,在 n 值和&之间切换视图的高度约束。 0 ,而不是隐藏在 YES & NO

当采用autolayout时,我了解到我们应该停止考虑帧和rects,但我不确定隐藏视图。感谢@ Paulw11提示!