Пользовательский UICollectionView, который оборачивает свои ячейки - PullRequest
0 голосов
/ 27 апреля 2018

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

Теперь мне нужно, чтобы UICollectionView обернуло содержимое без точного предопределенного размера. Как android linearLayout оборачивает его содержимое, так и любую из WPF панелей.

Как мне этого добиться?

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

Я использую flowLayout.

Есть предложения?

EDIT: Прикрепленный пример проекта, который содержит только пользовательский вид коллекции https://monosnap.com/file/9Y78XqcwAUNFxCo382u3bTr7CDS77F

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

Вы должны попытаться установить оценкуItemSize макета потока представления вашей коллекции:

if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
    flowLayout.estimatedItemSize = CGSize(width: 1, height: 1)
}

Источник: https://medium.com/@wasinwiwongsak/uicollectionview-with-autosizing-cell-using-autolayout-in-ios-9-10-84ab5cdf35a2

0 голосов
/ 22 мая 2018

Вы должны попытаться установить приоритет содержимого Hugging и приоритет сопротивления сжатию содержимого для collectionView, а также его подпредставлений, если это необходимо.

Этого можно добиться с помощью инспектора размера в раскадровке / xib, но, поскольку вы используете код, поместите код для достижения того же.

// Hugging priority is given so that views are sized less than the estimated size.
collectionView.setContentHuggingPriority(1000, for: .vertical)
collectionView.setContentHuggingPriority(1000, for: .horizontal)

// Content Compression resistance is given so that views are not sized less than its size because of other constraints.   
collectionView.setContentCompressionResistancePriority(1000, for: .vertical)
collectionView.setContentCompressionResistancePriority(1000, for: .horizontal)

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

0 голосов
/ 18 мая 2018

Можете ли вы проверить размер границ collectionView и соответствующим образом обновить высоту контейнера. Возможно, вам придется переопределить некоторые API-интерфейсы, чтобы обновить это.

...