将 UICollectionView 部分中的所有项目替换为一项(组合单元格)
Posted
技术标签:
【中文标题】将 UICollectionView 部分中的所有项目替换为一项(组合单元格)【英文标题】:Replace all items in section in UICollectionView with one item (combine cells) 【发布时间】:2013-10-04 00:44:19 【问题描述】:我有一个集合视图,它使用带有部分的流布局。 在某些用户操作中,我需要用一个新项目替换特定部分中的所有项目并为该更改设置动画(我希望我能够为此使用交互式过渡)。 基本上 - 部分中的单元格应合并为带有动画的单个单元格。这可以通过使用 2 种不同的布局和自定义过渡类来实现吗?任何人都可以提供有关如何做得更好的建议吗?
【问题讨论】:
你对句子“单元格应该动画合并到一个单元格”是什么意思,所以你想让更多单元格内的所有信息进入一个单元格? 我更改了文本:我想动画合并特定部分中的单元格 【参考方案1】:好吧,也许我应该在问这个问题之前阅读更多关于 UICollectionViews 的信息。 我设法通过使用这个算法达到了预期的效果
-
将旧节数据数组复制到某个临时数组中
用只需要一个对象的新数组替换数据源中的旧部分数据。
调用
[_collectionView performBatchUpdates:^
并在块内查看本节中的所有现有项目并调用[_collectionView deleteItemsAtIndexPaths:itemsToRemove];
致电[_collectionView insertItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:0 inSection:indexPath.section]]];
致电[_collectionView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section]];
然后,如果我需要恢复部分,我需要重复这些步骤,但将数据源中的部分替换为带有原始数据的临时数组,删除单个现有项目(单元格)并将所有项目(单元格)插入部分。
【讨论】:
以上是关于将 UICollectionView 部分中的所有项目替换为一项(组合单元格)的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3:如何将 UICollectionView 中的最后一行单元格水平居中,只有一个部分?
将标题添加到 UICollectionView,而不是 UICollectionView 的部分
一个UIViewController中的多个UICollectionView数据源