使用自动布局时无法隐藏或删除 UICollectionViewCell 中的视图

Unable to hide or remove views in UICollectionViewCell when using Autolayout

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

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

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

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

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

问题只出在第一批可见单元格上。

我已经尝试 removeFromSuperview 而不是隐藏单元格,但也没有成功。

在这种情况下使用自动布局和 UICollectionViews 时是否有正确的方法或最佳实践?

由于我们无法将标签设置为约束,我们别无选择,只能将 UICollectionViewCell 子类化,并且 link 将约束设为 IBOutlet。

然后在cellForRowAtIndexPath:

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

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

在采用自动布局时,我了解到我们应该停止考虑框架和矩形,但我不确定是否要隐藏视图。感谢@Paulw11 的提示!