使用布局约束调整 UICollectionView 的大小。节标题移动

Posted

技术标签:

【中文标题】使用布局约束调整 UICollectionView 的大小。节标题移动【英文标题】:Resizing a UICollectionView with layout constraints. Section headers move 【发布时间】:2013-03-11 14:14:14 【问题描述】:

我在许多其他视图之间有一个 UICollectionView,这些都是使用约束布局的,其中集合视图的高度是在其他视图的所有高度和它们之间的间隙之后的剩余空间。

有时集合下方的其中一个视图会放大,因此集合视图会变短。

这按我的预期工作,除了部分标题(补充视图)的位置随着视图缩小而向上移动相同的量,但数据单元格保持在同一个位置。这样现在标题与单元格重叠,并且它们曾经存在的间隙存在。

一旦它们被滚动出屏幕或设备被旋转,这个问题就会得到解决,但我不知道如何阻止它发生

编辑:

我只是尝试了另一种方式,并在集合视图上方增加了视图的大小,现在单元格在缩小时会向下移动,并且标题保持固定。

似乎单元格相对于视图的顶部定位,而标题相对于视图可见部分的底部定位,这有点奇怪。

【问题讨论】:

【参考方案1】:

我想出的答案是:

想办法将invalidateLayout 发送到collectionViewLayout

创建一个collectionViewFlowLayout的子类(这是我使用的布局类型)
- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds

  return YES;

但这最终会包含在调整大小动画中,并且从情节提要中复制所有单元格和标题大小等似乎需要做更多的工作。

【讨论】:

以上是关于使用布局约束调整 UICollectionView 的大小。节标题移动的主要内容,如果未能解决你的问题,请参考以下文章

自动布局 UICollectionView iOS 8

从 Storyboard 加载的 UICollectionView 未正确调整大小

使用自动布局调整大小的 UICollectionViewCell

UICollectionView 上的动画自动布局约束更改

自定义布局中约束更改的动画 UICollectionView 项目

UICollectionView 自动布局约束正在打破