ios – 如何为UICollectionView创建“粘性”页脚?

ios – 如何为UICollectionView创建“粘性”页脚?,第1张

概述为UICollectionView提供页脚的最佳方法是什么?“粘贴”在给定页面上的屏幕底部?假设UICollectionView是全屏的,只有一个部分. 目前我在collectionView:viewForSupplementaryElementOfKind:atIndexPath:中提供了一个UICollectionReusableView对象,但是(正如人们所预料的那样)当我的集合内容超出这个 为UICollectionVIEw提供页脚的最佳方法是什么?“粘贴”在给定页面上的屏幕底部?假设UICollectionVIEw是全屏的,只有一个部分.

目前我在collectionVIEw:vIEwForSupplementaryElementOfKind:atIndexPath:中提供了一个UICollectionReusableVIEw对象,但是(正如人们所预料的那样)当我的集合内容超出这个屏幕的界限时,页脚会被推离屏幕.

我猜测关键是装饰视图 – 但我找不到任何关于这些工作方式的良好代码(非IB)示例,而且我认为Apple的文档在这个特定主题上不清楚.

更新:装饰视图

在构建和试验装饰视图(using this tutorial)后,我遇到了一些限制 – 即装饰视图对象和您的UICollectionVIEwController控制器对象之间实际上没有任何回调(装饰视图由UICollectionVIEwLayout对象管理,而不是UICollectionVIEwController对象).苹果公司认为装饰视图仅限于视觉装饰而非数据驱动(尽管你明显可以解决这个问题).

所以,“正确”的解决方案仍然无法解决,但同时我刚刚创建了一个静态的UIVIEw对象,我只是从我的UICollectionVIEwController对象中管理它.它工作正常,但感觉不对.

更新:粘性标题

在过去的几个月里,我在各个项目中处理过类似的问题,并且最近找到了粘性headerS的解决方案.我认为这同样适用于页脚,但我还没有测试过.

有关标题的详细信息:

How to make Supplementary View float in UICollectionView as Section Headers do in UITableView plain style

实施非常繁重,但在大多数情况下似乎运行良好.

如果很快就这个问题没有进一步的活动,我将作为副本关闭并指向上面的文章.

解决方法 基本上你需要做的是提供一个自定义的UICollectionVIEwLayout子类,当边界发生变化时(当视图滚动边界变化时)使自身无效.然后为补充视图提供UICollectionVIEwLayoutAttributes,其中更新中心以拥抱集合视图的当前边界(顶部,底部,左侧,右侧,等等).

我在github上添加了演示此策略的项目.

更新:从iOS 9开始,UICollectionVIEwFlowLayout有两个非常方便的属性,可以大大简化这项任务.请参阅SectionheadersPinToVisibleBounds和sectionFootersPinToVisibleBounds.

总结

以上是内存溢出为你收集整理的ios – 如何为UICollectionView创建“粘性”页脚?全部内容,希望文章能够帮你解决ios – 如何为UICollectionView创建“粘性”页脚?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1109523.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存