私は UICollectionView を持っており、常にディスプレイの高さの半分、時には幅の半分、時には幅の 1/4 のセルを持ちたいと思っています。下の図では、UICollectionView が表示しているものを描画しました。ランドスケープでは、1/4 幅のセル、次に半分のセル、さらに 1/4 のセルを表示するように指示しており、それが再び繰り返されます。理論上は画面上に 6 個のセルがあるはずですが、セルがすべて散らばってしまいます。何が間違っているのかわかりません。すべてのセルのサイズが 1 つである場合は問題なく動作しますが、サイズが異なるだけでこれが発生します。
これが起こることです:
これが私がしたいことです:
レイアウトを設定し、個々のセル サイズを変更するコードは次のとおりです。
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
if ([bigCells containsObject: indexPath.row]) {
return CGSizeMake((CollectionView.frame.size.width/2), (CollectionView.frame.size.height/2));
} else {
return CGSizeMake((CollectionView.frame.size.width/4), (CollectionView.frame.size.height/2));
}
}
- (void)prepareLayout {
self.itemSize = CGSizeMake((self.collectionView.frame.size.width/2), (self.collectionView.frame.size.height/2));
self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
self.minimumInteritemSpacing = 0;
self.minimumLineSpacing = 0;
}