问题标签 [uicollectionviewcompositionallayout]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - iOS 14.3 上的 UICollectionViewCompositionalLayout 错误
我在iOS 14.3上遇到了一个奇怪的布局问题,其中集合视图UICollectionViewCompositionalLayout
在我的情况下与UICollectionViewDiffableDataSource
. _UICollectionViewOrthogonalScrollerEmbeddedScrollView
当您有一个正交部分之前有一个固有高度部分时,问题在于内部的错误位置。
幸运的是,我能够很容易地重现该问题。考虑拥有这个数据源:
对于每个部分,您创建以下布局:
打破布局的事情是同时进入.first
部分itemSize
和高度。groupSize
.estimated
您可以在iOS 14.3上看到以下结果:乍一看布局在视觉上是正确的,但您立即意识到它已损坏,因为内部滚动视图位于错误的位置。这意味着水平滚动错误地发生在蓝色区域。
在 iOS 14.2 之前运行完全相同的代码,您将获得正确的布局。
你怎么看这个问题?我是否遗漏了什么或者它可能是一个 UIKit 错误?
谢谢
ios - 如何将 UICollectionViewController 的自定义初始化程序与 UICollectionViewCompositionalLayout 一起使用?
假设您想使用自定义初始化程序来实例化UICollectionViewController
.
使用UICollectionViewFlowLayout
,这很简单:
但是,UICollectionViewCompositionalLayout
的指定初始化器需要一些参数,最重要的是 section 参数:
这意味着我必须在UICollectionViewController
. 如果布局包含诸如枚举之类的部分标识符,那么它也必须在初始化程序中。如果你必须NSCollectionLayoutEnvironment
在你的布局中包含,它也会成为问题。
我正在查看 Apple 的示例,所有示例都使用UIViewController
而不是UICollectionViewController
默认使用。尽管这些示例没有使用任何自定义初始化程序,但此方法确实通过允许我们在之后创建布局来解决上述问题:
您现在可以简单地使用UIViewController
的自定义初始化程序。
UICollectionViewCompositionalLayout
使用自定义初始化程序的最佳方法是什么?
ios - Swift:如何选择返回集合视图部分的标题?
我有一个UICollectionViewDiffableDataSource
这样的:
我像这样定义我的部分标题的布局:
最后,要返回我的标题,我有这个函数返回UICollectionReusableView
如下:
很棒的是:我可以在UICollectionView
.
我想要什么:如何选择不显示特定部分的特定标题?
当我尝试nil
在以下函数中返回时:
我收到以下错误:
我对如何“可选地”返回一个部分的标题的唯一想法是注册另一个高度为零的标题视图,并在我根本不想返回任何标题时返回此标题。
但是对我来说,这似乎有点混乱,如果我可以nil
在我不显示标题时返回,那会更干净。
我究竟做错了什么?
谢谢你的帮助!
ios - 将 NSCollectionLayoutBoundarySupplementaryItem 放在单元格的顶部
我无法UICollectionViewCompositionalLayout
在单元格顶部添加页脚。具体来说,我想在我的页脚中有一个交互式控件(在我的例子中是一个 UIPageControl)。这是一个示例布局,
页脚的配置如下,
假设我的页脚中有一个按钮,我想点击它。我已更改页脚的 zIndex,因此它高于我部分中的其他视图。
上面代码片段的结果是按钮在单元格顶部可见,但不可点击。在视图调试器中进行一些检查后,很明显补充视图被添加到单元格之前的视图层次结构中,并且更改 zIndex 只会将图层移动到前面,而不是完整的视图。有没有办法改变视图在组合布局中的添加顺序?或者有没有其他方法可以将页脚视图带到单元格上方?
ios - 将 NSCollectionLayoutSupplementaryItem 放在包含组的底部
上下文:
我正在使用 UICollectionViewCompositionalLayout 和估计的高度创建单元格,基于单元格内的动态文本。每个单元格的底部后角都有一个补充项目(一个按钮)。创建布局的代码的一小段摘录:
然后我使用单独的方法来创建补充项:
问题:
因为单元格的高度是动态的,所以补充项目彼此不在同一y
位置。但是,我确实希望它们是动态的,并且每个补充项目都相同y
。见下图:
一个想法可能是能够将补充项目放在它们的包含组上(listItemGroup
在我上面的摘录中),但是有没有办法把补充项目放在一个NSCollectionLayoutGroup
?
如果没有,实现这一结果的最佳方法是什么?