Авторазмер UI CollectionView для его содержимого

Я использую UICollectionView с фиксированным размером CollectionViewCells. Я отображаю это CollectionView в popOver с помощью UIPopoverController.

Моя цель заключается в том, чтобы popOver автоматически изменял размер содержимого CollectionView. Так что, если у меня только 4 клетки, то она должна быть маленькой. И если у меня будет больше клеток, это должно быть больше. Я хочу избежать пустого места, оставшегося в popOver.

Поэтому я не хочу фиксированный размер popOver, а переменный в зависимости от количества ячеек в CollectionView.

Какие-либо предложения?

1 ответ

Решение

Мне было трудно понять это самому, но наконец-то понял. Вы должны получить доступ к свойству collectionViewLayout представления Collection, а затем использовать метод collectionViewContentSize, чтобы получить размер вашего контента. Затем вы можете использовать их, чтобы изменить размер представления коллекции, установив его рамку.

CGRect rectangle;
rectangle = _collectionView.frame;
rectangle.size = [_collectionView.collectionViewLayout collectionViewContentSize];
_collectionView.frame = rectangle;

Теперь, когда размер представления вашей коллекции соответствует его содержанию, вы можете установить размер popOver в зависимости от размера представления коллекции. Это может выглядеть примерно так.

popOver.frame = _collectionView.frame;

или же

[popOver sizeToFit];
Другие вопросы по тегам