gpt4 book ai didi

ios - 替换/更新 ASCollectionNode 中的布局

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:29:47 24 4
gpt4 key购买 nike

我正在尝试在 ASCollectionNode 中切换布局。使用标准 UICollectionView 时,您可以调用

self.collectionView.setCollectionViewLayout(layout, animated: true)

替换/更新现有布局。

但是,这不适用于 ASCollectionNode。呼唤

self.collectionView.view.setCollectionViewLayout(layout, animated: true)

什么都不做。如何实现这样的功能?

最佳答案

因此,要实现所描述的功能,需要做的就是摆脱所有 UICollectionViewLayout 子类,只保留基类 UICollectionViewLayout 的 1 个实例。然后,重写 ASCellNode 子类中的 layoutSpecThatFits 方法,并返回基于一些标志、枚举或任何其他人们认为适合在集合显示模式之间进行选择的机制的布局规范。这本质上是对用于默认 Collection View 的多种布局机制的替代。然后,使用 collectionView:constrainedSizeForNodeAt: 方法(最有可能在 View Controller 中)实现 ASCollectionViewLayoutInspecting 协议(protocol),返回适合每个显示器的 ASSizeRange模式。最后,在您的 ASCollectionNode 实例上调用 relayoutItems 方法以启动布局重新计算。如果需要,将其包装在 UIView 动画 block 中。

附言我认为值得一提的是,如果在 collectionView:constrainedSizeForNodeAt: 中,您为每种显示模式返回相同的范围值(也许您只想更改单元格内的布局规范,而不是它们的实际大小),那么relayoutItems 基本上不会做任何事情。 ASDK 将使用缓存的布局,因为它会根据大小范围值未更改的事实将其视为有效。在这种情况下,您可能需要想出一些布局失效策略来使 relayoutItems 工作。

关于ios - 替换/更新 ASCollectionNode 中的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49798853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com