在UICollectionView中构建非常灵活/动态“头”的最佳方法是什么

时间:2014-02-13 09:27:15

标签: ios iphone uicollectionview uicollectionviewcell uicollectionviewlayout

我需要使用UICollectionView非常动态的“标题”构建UICollectionViewFlowLayout(为清楚起见,我将其称为“视图A”以避免混合它有一个真正的集合视图标题)但我不确定什么是最好的方法: collectionViewCell 标题补充视图

我的意思是灵活的,通过降低重要性来排序的要点:

  1. 视图A将包含需要检测手势的按钮和子视图,因此我必须能够检测视图A的子视图上的操作。
  2. 我需要能够在集合视图上重新加载数据,而无需重新加载视图A.
  3. 我需要能够随时更新视图A的子视图的布局(例如,在集合视图的viewDidScrolldelegate,根据contentOffset更改进行更新)。
  4. 如果可能的话,我希望能够动态地更改视图A(我的意思是不必使布局无效)。我希望A在顶部看起来很粘,在滚动时收缩直到它消失。看看最近发布的“秘密”应用程序,看看我的意思(在UITableView为他们完成)。虽然我可以通过改变子视图的布局(参见第3点)来滚动而不改变框架和作弊,以便给出一个粘性标题的感觉。
  5. 您认为最好的组件是什么?我可以使用UICollectionViewCell,标题还是补充视图?如果是这样的话?如果没有,您是否考虑过我可以使用的另一种方法来获得相同的行为(透明标题和视图A在集合视图后面?在视图层次结构中的其他地方添加视图?)。

    感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

看一下UICollectionReusableView类。

您可以将CollectionView上的nib注册为“SupplementaryView”(registerNib:forSupplementaryViewOfKind:withReuseIdentifier :,使用UICollectionElementKindSectionHeader类视图)

然后你必须在你的委托中实现collectionView:viewForSupplementaryElementOfKind:atIndexPath:方法,并确保为UICollectionElementKindSectionHeader类型返回一些内容。

最后你必须实现你的UICollectionViewDelegateFlowLayout的collectionView:layout:referenceSizeForHeaderInSection:方法来设置标题的大小。

如果有帮助,请告诉我。