代码之家  ›  专栏  ›  技术社区  ›  Dr. Cashberg

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

  •  16
  • Dr. Cashberg  · 技术社区  · 8 年前

    最近,我遇到了一个界面生成器问题,我没有解决。我使用的是UICollectionViewController,每当我添加一个单元格时,它会立即显示一个橙色的矩形(表示布局自动更新)。更新帧/单元格不会改变任何内容。与橙色标记相关的警告显示“预期:高度=Y,实际:高度=X”,其中Y为 总是 确切地

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

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

    非常感谢你!

    5 回复  |  直到 8 年前
        1
  •  13
  •   AnthoPak saburo    8 年前

    找到解决方案!(Xcode 9.2)

    这个bug似乎只有在您尝试嵌入 UICollectionViewController 在一个 Container View 在故事板中。 解决方法是在设置约束时删除segue,并在设置好约束后重新添加segue。

    我也认为设置 UICollectionViewController 大小为 Freeform 可能是错误的原因。如果是这样,请在更改大小之前尝试设置约束。

    希望这有帮助!

        2
  •  9
  •   bbjay Dr. Cashberg    8 年前

    我不确定这是否解决了问题,但在我执行以下操作后,警告和问题消失了:

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

        3
  •  3
  •   Sujananth    8 年前

    在我的例子中,我添加了两个集合视图单元格,带有集合视图控制器。仅将视图控制器设置为自由形式对我们没有帮助。需要更新大小,以消除警告。

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

    Get rid of story board warning

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

        4
  •  1
  •   Jiang Lun    8 年前

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

        5
  •  1
  •   Ash    7 年前

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

    有一个简单的修复方法,尽管我认为这是IB中的一个bug,应该由苹果来纠正,而不是绕过它进行黑客攻击。解决方案(至少对我来说,您的里程可能会有所不同!)将集合视图放置在普通 UIView 并将其边缘固定到该视图上,然后将该父视图放置在您希望集合视图的位置,以及它所需的所有约束。

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