具有自定义UICollectionViewLayOut的UICollectionView

时间:2013-05-31 07:44:35

标签: ios uicollectionview

我试图让uicollectionviewcell中的内容在向一个方向滚动时变得更大。我最初将单元格的大小设置为我想要的最大尺寸,然后单元格内的内容是大小的一半。内容是一个uiimageview。

所以我有一个自定义 UICollectionViewFlowLayout ,其中我将 layoutAttributesForElementsInRect 子类化,以使细胞中的uiimageview在移入时变得更大一个方向。我还有 shouldInvalidateLayoutForBoundsChange 返回YES 当我滚动时,一切都很完美,图像视图会变得更大。但是,如果我选择一个单元格以推送到新的viewcontroller,然后当我单击后退按钮返回到这个uicolletionview时,几个单元格中的放大的uiimageview将以原始大小显示。如果我再次滚动,它们只能回到正确的放大尺寸,为什么?如何在推动后保持其放大尺寸?

我尝试了invalidatelayout但它只会刷新内容的正确放大尺寸的layoutattributes,但是只要尺寸已经放大,视图就不会更新。

感谢

1 个答案:

答案 0 :(得分:0)

我在设计cv单元时遇到了类似的问题,并且问题在于子视图何时会调用更新它们的大小,这在视图刷新时可能不会发生。

您可能希望动态调整单元格的大小,并让内容自动调整为该大小,而不是调整单元格中的内容大小。然后调用[mycollection invalidateLayout]应该是你所需要的,甚至可能不是。

方法是 的的CollectionView:布局:sizeForItemAtIndexPath: 您在 UICollectionViewFlowLayout.h

中声明的内容

如果您遇到麻烦,子视图不会随单元格大小调整大小,则子视图的约束/自动布局等会产生相关问题。