У меня есть раскадровка с UICollectionViewController с прототипами ячеек. Размер ячейки не указан напрямую, и это вызывает случайные ошибки пользовательского интерфейса, такие как растягивание анимации ячейки. Я хочу установить размер напрямую, но я не нашел, как это сделать в xcode 10 (и последней версии Swift). Как решить эту проблему?

Примечание. Я знаю о существовании UICollectionViewDelegateFlowLayout, но не знаю, как его применить к UICollectionViewController .

0
Vyachaslav Gerchicov 8 Окт 2018 в 13:20

2 ответа

Лучший ответ

Если вы используете UICollectionViewFlowLayout:

  1. Сделайте свой UICollectionViewController или UIViewController, содержащий экземпляр UICollectionView, чтобы принять UICollectionViewDelegateFlowLayout

    class MyAwesomeCollectionViewControler: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout 
    

    { ... }

  2. Реализуйте метод ниже:

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: 100, height: 100) // Return desired size here}
    
0
fewlinesofcode 8 Окт 2018 в 15:04

Выяснилось, что доступно 2 вида макета - «поток» и «пользовательский» (эти имена отображаются в конструкторе интерфейсов).

Короче говоря, если вы планируете использовать UICollectionViewDelegateFlowLayout и его простой метод "размер для элемента", вам следует выбрать "поток"

0
Vyachaslav Gerchicov 8 Окт 2018 в 12:25