Xcode Interface Builder 9.1集合视图单元格太小"预期高度"

时间:2017-11-20 20:34:50

标签: interface-builder uicollectionviewcell

最近,我遇到了Interface Builder无法解决的问题。我使用的是UICollectionViewController,每当我添加一个Cell时,它会立即显示一个橙色矩形(表示自动布局更新)。更新帧/单元格不会改变任何内容。与橙色标记相关的警告显示"预期:高度= Y,实际:高度= X"其中Y 始终 完全 X-100。那就是:当我设置自定义单元格高度为193时,它表示"预期:高度= 93"。无论我输入哪种尺寸,都会发生这种情况。

问题在于我对子视图及其约束有很多困难。例如,如果我添加一个带有约束的子视图以保持与单元格相同的高度,它将显示为93(预期高度),即使我的单元格应为193.布局也变得不可能。

我尝试添加一个新单元格,同样的问题。我尝试删除每个子视图并重新添加它们,没有。

非常欢迎任何想法。

非常感谢!

5 个答案:

答案 0 :(得分:12)

找到解决方案! (Xcode 9.2)

只有当您尝试将UICollectionViewController嵌入故事板中的Container View时,才会出现此错误。 解决方法是在设置约束时删除segue,并在设置好约束后重新添加segue。

我还认为将UICollectionViewController大小设置为Freeform可能会导致错误。如果是这样,请在更改大小之前尝试设置约束。

希望这有帮助!

答案 1 :(得分:9)

我不确定这是否解决了,但是一旦我做了以下事情,警告和问题就消失了:

在Interface Builder中选择CollectionViewController并将大小设置为自由形式,并使高度更大,足以显示所有模板单元格。 (另外:也许刷新视图)。这解决了我的问题。

答案 2 :(得分:3)

在我的情况下,我添加了两个集合视图单元格,带有集合视图Controller.Only将视图控制器设置为自由形式不会帮助我们。需要更新大小,以摆脱警告。

更新集合视图单元格框架,不会帮助我们。警告将不断改变其长度。

Get rid of story board warning

我试图在不考虑警告的情况下工作,因为我已经以编程方式设置了我的集合视图单元格大小并且它按预期工作。

答案 3 :(得分:1)

我认为这只是一个奇怪的错误 我删除SB中的collectionViewController,然后创建一个新的,问题消失

答案 4 :(得分:1)

这是Interface Builder的常见错误。我不知道确切的原因,但我相信这与将集合视图放入没有确切大小的排列视图有关。将它们放在滚动视图,堆栈视图和容器视图中时,我已经看到了。

有一个简单的修复程序,尽管我认为这是IB中的错误,应该由Apple予以纠正,而不是对其进行修改。解决方案(至少对我来说-您的里程可能有所不同!)是将集合视图放置在普通的UIView内,然后将其边缘固定在其上,然后将该父视图放置在您希望使用集合视图的位置所需的所有约束条件。

我通常发现在运行时实际上没有自动布局问题,这就是为什么我认为这纯粹是一个Interface Builder错误。