UICollectionViewCell интервал для заполнения максимальной площади - PullRequest
0 голосов
/ 27 апреля 2018

Первый раз, используя UICollectionView, если вы можете в это поверить, и мне интересно, как заставить ячейки в основном заполнять максимально допустимое пространство.

Вид на SE, он заполняется ... в основном нормально, и как я этого хочу. Конечно, я бы хотел, чтобы блоки доходили до дна черной области (цвета, конечно, временны), но это достаточно близко.

enter image description here

На iPhone X и других больших экранах, конечно, он поддерживает «минимальный» интервал, но я бы хотел, чтобы он автоматически настраивал интервал так, чтобы они заполняли область. Два верхних блока сверху и два нижних блока снизу, с равномерно распределенным пространством между ними.

collection view iphone x

Как ни странно, мне удалось достичь этого довольно легко, когда я делал это вручную с каждым из них в обычном режиме. Я начал пытаться использовать UICollectionView, потому что он стал действительно уродливым, когда повернулся в ландшафтный режим. Вот пример того, как эти элементы были настроены с использованием более ручного метода. enter image description here

collection view attributes collection view size inspector

Есть предложения? Похоже, что-то, что было бы легко переключаться ... но я, кажется, врезался в стену и тупик. Я что-то упускаю так очевидно здесь или как?!?


О, и я тоже играл с использованием:

-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section

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

Сначала это казалось " работой ".

Но в моем тестировании эта функция срабатывает только при первой загрузке представления, а затем только , когда она переходит в ландшафтный режим. Когда он выходит из и возвращается к портрету, он не перезапускается и не пересчитывается. Таким образом ... сохраняя (теперь новый) ландшафтный интервал.

1 Ответ

0 голосов
/ 27 апреля 2018

Вам необходимо создать UICollectionViewFlowLayout и программно вычислить размер элементов.

Или переопределить размер элемента UICollectionViewDelegateFlowLayout.

https://developer.apple.com/documentation/uikit/uicollectionviewdelegateflowlayout/1617708-collectionview

...