1

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

所以我有一个自定义的UICollectionViewFlowLayout,我在其中对layoutAttributesForElementsInRect进行了子类化,以使单元格中的 uiimageview 在向一个方向移动时变得更大。我也有shouldInvalidateLayoutForBoundsChange返回 YES 当我滚动时一切正常,图像视图会变大。但是,如果我选择一个单元格来推送到一个新的视图控制器,然后当我单击后退按钮回到这个 uicolletionview 时,几个单元格中放大的 uiimageview 将以原始大小显示。如果我再次滚动,它们只能回到正确的放大尺寸,这是为什么呢?我怎样才能让它在被推后保持放大的尺寸?

我尝试了 invalidatelayout 但它只会用正确放大的内容大小刷新布局属性,但即使大小已经放大,视图也不会更新。

谢谢

4

1 回答 1

0

我在设计 cv 单元格时遇到了类似的问题,并且认为问题出在子视图被调用以更新其大小时,这在视图刷新时可能不会发生。

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

该方法是 collectionView:layout:sizeForItemAtIndexPath: 您在UICollectionViewFlowLayout.h中声明的

如果您在子视图不随单元格大小调整大小的情况下遇到麻烦,则相关问题可能来自子视图的约束/自动布局等。

于 2013-05-31T11:14:13.957 回答