UICollectionView 视图和约束使单元格适合

UICollectionView view and constraints to make cells fit

这些天玩了 UICollectionView 之后,我想我明白它是如何工作的,但是,我缺少一些东西。

我在 UICollectionView 中添加了 8 个视图,当它们不适合屏幕时,它们不会跳到下一行。 UICollectionView 好像比屏幕还大。我不得不在 UICollectionView 上使用约束以使其与父视图的宽度和高度相同。

这里是一些截图:

无约束:

有限制条件:

谁能解释一下这种行为?

如果您没有在 Storyboard 中的视图上设置约束,它将保留在 Storyboard 中指定的尺寸 - 它不会自动调整大小 superview。因此,UIViewCntroller 的根视图已调整大小以适应屏幕这一事实不会影响 UICollectionView.

的大小

由于您一直在创建通用尺寸的 UICollectionView,因此它最终比实际屏幕大得多。


在评论中回答您的后续问题:

  1. 在运行时将保留其宽度和高度的常量,与其父级的大小无关(除非您另外指定)。

  2. 当显示 UIViewController 时,(在大多数情况下)它的根视图会调整大小以适合屏幕。但是,除非您另外指定,否则它的子项将保持不变。

  3. 我所说的通用大小是指故事板中 UIViewController 的大小,如您在 Attribute Inspector -> Size -> Freeform 中指定的那样,默认为 600x600。我想 "freeform" 比 "universal" 更正确。