我在UICollectionViewCell中有一个UIImageView(让我们称之为 myImageView ),并且有必要的约束。我正在使用故事板并将视图和代码与viewWithTag
链接起来。
在cellForItemAtIndexPath中,有一个条件,例如:
if (1 + 1 == 2)
myImageView.hidden = YES;
else
myImageView.hidden = NO
我已设置断点并验证代码已执行,但 myImageView 并未隐藏第一批可见单元格(假设所有这些单元都满足条件)。
当我向下滚动以显示新的(或重复使用的)单元格时,一切都按预期工作(满足条件并假设隐藏的单元格被隐藏,反之亦然)。当我向上滚动以再次显示第一批单元格时,它也可以正常工作。
问题仅在于第一批可见细胞。
我尝试过removeFromSuperview
而不是隐藏细胞,但也没有运气。
在这种情况下使用autolayout和UICollectionViews时是否有正确的方法或最佳做法?
答案 0 :(得分:0)
由于我们无法将标记设置为约束,因此我们别无选择,只能将UICollectionViewCell子类化并将约束链接到IBOutlet。
然后在cellForRowAtIndexPath
:
cell.imageViewHeightConstraint.constant = imageViewShouldHide ? 0 : cell.imageView.image.size.height;
简单地说,在 n 值和&之间切换视图的高度约束。 0 ,而不是隐藏在 YES & NO
当采用autolayout时,我了解到我们应该停止考虑帧和rects,但我不确定隐藏视图。感谢@ Paulw11提示!