动态更改UICollectionViewCell宽度

时间:2013-10-29 09:20:15

标签: ios uicollectionview uicollectionviewcell uicollectionviewlayout

我有一个带有imageView和collectionView的视图。 ImageView位于屏幕左上角,大小(150,250).CollectionView是全屏。 collectView的单元格里面有标签。

当单元格靠近imageView时,它的宽度应该更小。当单元格低于imageView时,它应该是全宽的。这也应该在滚动时工作,因此单元格的大小应该动态变化。所以,我需要制作一个自定义布局。我想,“layoutAttributesForElementsInRect:”是一个答案。但是如何使细胞属性在某个矩形中发生变化?还是我正朝着错误的方向前进? 提前谢谢。

example

1 个答案:

答案 0 :(得分:5)

我认为您正在寻找可以在invalidateLayout的{​​{1}}媒体资源上调用的collectionViewLayout方法。此方法会重新生成您的布局,在您的情况下,这也意味着调用UICollectionView,这是反映所需项目大小的正确位置。 Jirune指出了如何计算它们的正确方向。

使用invalidateLayout can be found here的示例。另请参阅有关该方法的-collectionView: layout: sizeForItemAtIndexPath:文档:

  

使当前布局无效并触发布局更新。

     

<强>讨论:

     

您可以随时调用此方法来更新布局信息。   此方法使集合视图本身的布局无效   马上回来。因此,您可以多次调用此方法   相同的代码块,不会触发多个布局更新。该   在下一个视图布局更新周期中发生实际布局更新。