Размер адаптивного макета UICollectionViewCell для разных устройств

Я использую адаптивный макет для разных размеров экрана iDevices, у меня проблемы с отображением двух ячеек в портретной ориентации. Я разработал ячейку, скажем, 130 x 210, которая отлично выглядит на iPhone 5, но когда в iPhone 6 у нас больше 30 пикселей, для которого я рассчитываю оставшееся пространство и устанавливаю пространство одинаково, но это выглядит ужасно

Когда я перехожу на iPhone 6+, это выглядит более странно, и на iPad будет больше ячеек подряд, порекомендуйте мне способ справиться с этой ситуацией или я должен рассчитывать размер предмета каждый раз и количество предметов Экран может содержать так пространство соответственно. Вот как я сейчас рассчитываю

int space = self.view.frame.size.width;
space = space - 130 *2;
space = space/3;
UICollectionViewFlowLayout *flow = [[UICollectionViewFlowLayout alloc] init];
flow.minimumInteritemSpacing = space;
flow.minimumLineSpacing = space;
flow.scrollDirection = UICollectionViewScrollDirectionVertical;
flow.sectionInset = UIEdgeInsetsMake(space, space, space, space);
flow.itemSize = CGSizeMake(130, 210);
[self.collectionViewGames setCollectionViewLayout:flow];

1 ответ

Я столкнулся с той же проблемой при реализации приложения, аналогичного приложению Photos. то, что я сделал здесь, я установил размер интервала на постоянное значение. и на основе оставшегося места я рассчитал размер предмета.

Вот код в моем случае

 var flowLayout = // your flow layout


        var itemWidth = self.view.frame.size.width / (5) // i am using 5 cells in a row
    flowLayout.itemSize = CGSizeMake(itemWidth - 2, itemWidth - 2)
    flowLayout.scrollDirection = UICollectionViewScrollDirection.Vertical
    flowLayout.sectionInset = UIEdgeInsets(top: 0, left: 0 , bottom: 0, right: 0)
    flowLayout.minimumInteritemSpacing = 2
    flowLayout.minimumLineSpacing = 2
Другие вопросы по тегам