Нет, к сожалению, вы не можете сказать ему, чтобы он автоматически использовал внутренний размер элемента, полученного из его макета.
Однако, если ваш макет действительно позволил бы настроить внутренний размер не неоднозначно через AutoLayout/ это содержимое, вы можете позвонить UIView.intrinsicContentSize
, возможно, смешивая с layoutIfNeeded
вызовом.Я не уверен, что это решение работает на 100%.
Если бы я был вами, я бы искал не способ назначить делегата и реализовать sizeForItemAt
, а скорее определить этот размер ТАКЖЕ в вопросахсама ячейка.
И, кстати, на самом деле, это немного "получится НЕ так, как вы ожидали", чтобы позволить ячейкам определять свой размер контента.Это может быть очень полезно и логично с UITableView, но вычисление макета в случае UICollectionView лучше определить с помощью более простого, расчетного подхода.
То есть, дешево вычислить ширину, равную половине ширины границ collectionView
и равной высоте, - вместо того, чтобы позволить самому контенту свободно размещаться с использованием очень динамических правил сжатия контента и оценки приоритета ограничения.Как правило, наличие всех ячеек не имеет абсолютно ничего общего с точки зрения соотношения сторон, ширины ИЛИ высоты, как правило, приводит к нежелательным результатам.