異なるサイズ(1x1,2x2,2x1,3x2.5)のセルを持つUICollectionView
を作成する必要があります。 collectionView:layout:sizeForItemAtIndexPath:
を使用しているサイズに応じてセルを追加するコードはすでに作成済みです。UICollectionViewのセルオーダー
は、ここでの結果(セル1および3は、セル2の左側にでなければならない)と予想される:
マイ(醜い)現在のコードであります(self.cellSize =スクリーンの幅/ 3):
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
CGFloat size = self.cellSize;
if (indexPath.item == 0) {
return CGSizeMake(self.cellSize * 3.f, self.cellSize * 2.5f);
}
if (indexPath.item == 1) {
return CGSizeMake(self.cellSize, self.cellSize);
}
if (indexPath.item == 2) {
return CGSizeMake(self.cellSize * 2.f, self.cellSize * 2.f);
}
if (indexPath.item == 3) {
return CGSizeMake(self.cellSize, self.cellSize);
}
if (indexPath.item == 4) {
return CGSizeMake(self.cellSize * 2.f, self.cellSize);
}
if (indexPath.item == 5) {
return CGSizeMake(self.cellSize, self.cellSize);
}
if (indexPath.item == 6) {
return CGSizeMake(self.cellSize, self.cellSize);
}
if (indexPath.item == 7) {
return CGSizeMake(self.cellSize * 2.f, self.cellSize);
}
if (indexPath.item == 8) {
return CGSizeMake(self.cellSize * 3.f, self.cellSize * 2.5f);
}
return CGSizeMake(size, size);
}
3は、セル1の上になければならないことセルを指定する方法はありますが、Cの左に2?
今後、各セルのサイズが異なる可能性があるため、変更されない静的レイアウトは実行したくありません。たとえば、セル2は2x1サイズになる可能性があります。
これを行うにはどの方法が最適ですか?私はUICollectionViewLayout
にフロー( "トップ"のような)を指定することを期待していましたが、そのようには機能しません...
私はあなたが各セルにそのフレームを与える 'UICollectionViewLayout'をサブクラス化しなければならないと思います。 – Larme