1

さまざまな iDevices 画面サイズにアダプティブ レイアウトを使用しています。iPhone 5 で完璧に見える 130 x 210 のセルを設計しましたが、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];
4

1 に答える 1

3

写真アプリに似たアプリを実装しているときに、同じ問題に直面しました。ここで行ったことは、間隔のサイズを一定の値に固定したことです。残りのスペースに基づいて、アイテムのサイズを計算しました。

これが私の場合のコードです

 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
于 2015-02-11T06:38:18.850 に答える