Xcode Interface Builder 9.1. Элементы коллекции коллекции имеют слишком малую "ожидаемую высоту",

Недавно у меня возникла проблема с интерфейсом Builder, который я не смог решить. Я использую UICollectionViewController, и всякий раз, когда я добавляю Cell, он сразу же показывает оранжевый прямоугольник (указывающий автоматическое обновление макета). Обновление фрейма/ячейки ничего не меняет. Предупреждение, связанное с оранжевой маркировкой, гласит: "Ожидаемое: height = Y, Actual: height = X", где Y всегда точно X-100. То есть: когда я устанавливаю пользовательскую высоту ячейки 193 года, она говорит "Ожидаемое: высота = 93". Это происходит независимо от того, в какой размер я вхожу.

Проблема в том, что у меня много трудностей с подзонами и их ограничениями. Например, если я добавлю subview с ограничением, чтобы поддерживать ту же высоту, что и ячейка, она будет показана как 93 (ожидаемая высота), хотя моя ячейка должна быть 193. Макет становится невозможным.

Я попытался добавить новую ячейку, такую же проблему. Я попытался удалить все подзаголовки и повторно добавить их, ничего.

Любые идеи приветствуются.

Большое спасибо!

Ответ 1

Я не уверен, что это разрешило это, но предупреждение и проблема исчезли, когда я сделал следующее:

Выберите CollectionViewController в Interface Builder и установите размер для свободной формы и увеличьте высоту, достаточно большую, чтобы отобразить все ячейки шаблона. (Плюс: возможно, обновить представления). Это решило проблему для меня.

Ответ 2

Решение найдено! (Xcode 9.2)

Ошибка UICollectionViewController когда вы пытаетесь встроить UICollectionViewController в Container View в раскадровку. Обходной путь заключается в том, чтобы удалить segue, когда вы устанавливаете ограничения, и повторно добавить segue, как только ваши ограничения будут хорошо установлены.

Я также думаю, что установка размера UICollectionViewController как Freeform может быть причиной ошибки. Если это так, попробуйте установить ограничения перед изменением размера.

Надеюсь это поможет !

Ответ 3

Я думаю, что это просто странная ошибка, я удаляю collectionViewController в SB, а затем создаю новую, проблема исчезает

Ответ 4

В моем случае я добавил две ячейки просмотра коллекции, имея в виду элемент управления коллекции. Только настройка диспетчера представлений на бесплатную форму не поможет нам. Необходимо обновить размер, чтобы избавиться от предупреждения.

обновлять рамки ячеек представления коллекции, не поможет нам. Предупреждение будет постоянно менять длину.

Get rid of story board warning

Я попытался работать, не учитывая предупреждения, так как я установил размер ячейки коллекции в программном виде и работает как ожидалось.

Ответ 5

Это распространенная ошибка в Интерфейсном Разработчике. Я не знаю точную причину, но я верю, что это связано с размещением видов коллекции внутри видов расположения, которые не имеют точного размера. Я видел это, когда помещал их в представления прокрутки, представления стека и представления контейнера.

Существует простое исправление, хотя я считаю, что это ошибка в IB, которую Apple должна исправить, а не взламывать. Решение (по крайней мере для меня - ваш пробег может варьироваться!) UIView том, чтобы поместить представление коллекции в обычный UIView и прикрепить к нему его края, а затем поместить это родительское представление в положение, в котором вы хотели, чтобы представление коллекции со всеми его ограничениями требуется.

Я обычно обнаруживал, что на самом деле не было никаких проблем с автоматическим макетом во время выполнения, поэтому я считаю, что это просто ошибка Interface Builder.