UICollectionView 更改布局 - 更改单元格

Posted

技术标签:

【中文标题】UICollectionView 更改布局 - 更改单元格【英文标题】:UICollectionView change layout - change cells 【发布时间】:2012-10-13 21:08:42 【问题描述】:

我有一个使用UICollectionViewDelegateFlowLayout 的 UICollectionView。我添加了一种在点击单元格setCollectionViewLayout 时更改布局的方法。

所有单元格都有一个带有文本的文本标签,我想在更改布局时清空每个单元格上的所有文本标签。实现这一目标的最佳方法是什么?

谢谢,

【问题讨论】:

【参考方案1】:

我想最简单的方法是在更改布局的同时在集合视图上调用 reloadData(并在 cellForItem 数据源方法中有一个条件,用于清空每个布局上的文本标签改变)。

或者,您可以让您的 UICollectionViewCells 跟踪他们当前显示的布局,并相应地调整他们的视图。

【讨论】:

谢谢伙计。我使用 [[[self collectionView] collectionViewLayout] isKindOfClass:[CircleLayout class]] 效果很好。不知道这是否是最好的方法。现在唯一的问题是布局之间的动画并没有真正起作用,因为我正在调用 reloadData。 我建议的第二种方法可能会更好,并保留布局之间的动画 - 唯一的缺点是实现起来会有点困难。您可能想尝试在布局更改时触发NSNotification,并让您的单元格监听它。这样您就不必重新加载它们,并且动画应该保留。 是的,这可能是要走的路。谢谢。在旁注中,我正在尝试使我的收藏视图类似于 iPad 上的照片应用程序。你认为苹果使用了一个collectionview,只改变了布局吗?也许我应该为此提出第二个问题。

以上是关于UICollectionView 更改布局 - 更改单元格的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView 上的动画自动布局约束更改

如何更改自定义 UICollectionView 布局引擎中的默认布局动画曲线?

在UICollectionView上动态设置布局会导致无法解释的contentOffset更改

自定义布局中约束更改的动画 UICollectionView 项目

在布局更改的同时重新加载/动画 UICollectionView

当 UICollectionView 更改布局时覆盖 UIAccessibilityLayoutChangedNotification