ios - UICollectionView View 和约束以使单元格适合

标签 ios iphone swift ipad interface-builder

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

我在 UICollectionView 中添加了 8 个 View ,当它们不适合屏幕时,它们不会跳转到下一行。看起来 UICollectionView 比屏幕大。我必须对 UICollectionView 使用约束,使其与父 View 具有相同的宽度和高度。

这里有一些截图:

没有约束:

Without constraints:

有约束:

With constraints

谁能解释一下这种行为吗?

最佳答案

如果您没有在 Storyboard 中对 View 设置约束,它将保留 Storyboard 中指定的尺寸 - 它不会使用 superview 自动调整大小。因此,调整 UIViewCntroller 的 Root View 大小以适合屏幕的事实不会影响 UICollectionView 的大小。

当您以通用尺寸创建 UICollectionView 时,它最终比实际屏幕大得多。

<小时/>

回答评论中的后续问题:

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

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

  3. 所谓通用尺寸,是指 Storyboard 中 UIViewController 的尺寸,如您在 Attribute Inspector -> Size -> Freeform 中指定的那样,默认为 >600x600。我认为“自由形式”比“通用”更正确。

关于ios - UICollectionView View 和约束以使单元格适合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31139938/

相关文章:

ios - Web 服务响应字典禁用按键自动排序?

ios - xib 中的 UITableView 未调用 cellForRowAtIndex

php - 将数据从服务器发送到 iPhone 应用程序

ios - UITableView = nil, fatal error : unexpectedly found nil while unwrapping an Optional value

ios - ViewControl 之外的 Swift 选择器

ios - 方法参数@selector

ios - Yosemite ios 6.1模拟器无法启动?

iphone - 将模型对象的 NSArray 传递给 View 对象的最佳(设计方式)方法是什么?

iphone - 消除录音轨道中当前播放的轨道声音

swift - 什么替换了 Xcode 6.3 中的 "main.m"文件