动态更改UICollectionViewCell宽度

kro*_*osh 2 ios uicollectionview uicollectionviewcell uicollectionviewlayout

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

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

例

Jay*_*jar 5

我想你正在寻找invalidateLayout你可以在你的collectionViewLayout财产上调用的方法UICollectionView.此方法会重新生成您的布局,在您的情况下也称为调用-collectionView: layout: sizeForItemAtIndexPath:,这是反映所需项目大小的正确位置.Jirune指出了如何计算它们的正确方向.

可以在此处找到invalidateLayout用法的示例.另请参阅该UICollectionViewLayout方法的文档:

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

讨论:

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

  • 谢谢你的回答.我想,应该有一个例子的链接?它不在那里 (2认同)