2

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

当单元格靠近 imageView 时,它的宽度应该更小。当单元格低于 imageView 时,它应该是全宽的。这也应该在滚动时起作用,因此单元格的大小应该动态变化。所以,我需要做一个自定义布局。我想,“layoutAttributesForElementsInRect:”就是一个答案。但是如何使某个矩形中的单元格属性发生变化?还是我看错了方向?先感谢您。

例子

4

1 回答 1

5

我认为您正在寻找invalidateLayout可以调用. 此方法重新生成您的布局,在您的情况下也意味着调用,这是反映您所需项目大小的正确位置。Jirune 指出了如何计算它们的正确方向。collectionViewLayoutUICollectionView-collectionView: layout: sizeForItemAtIndexPath:

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

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

讨论:

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

于 2013-10-29T09:28:53.427 回答