web-dev-qa-db-ja.com

動的なサイズのUICollectionViewセル

enter image description here

1)UICollectionViewで画像のように達成するにはどうすればよいですか?

2)-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPathメソッドを試し、異なるサイズを渡しましたが、セル間にスペースがありません。それらのスペースを空にすることはできますか?セルごとに異なる高さと幅が欲しい

現在の出力: enter image description here

54
Akshit Zaveri

申し訳ありませんが、これは非常に遅くなります...しかし、これはまだ答えを見つけていない人に役立つでしょう。配列内に画像がある場合、画像サイズを参照し、そこからセルサイズを調整するだけです。

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    UIImage *image = [imageArray objectAtIndex:indexPath.row];
//You may want to create a divider to scale the size by the way..
    return CGSizeMake(image.size.width, image.size.height); 
}

お役に立てれば..

49
RobMillerJ25

たぶん、このレイアウトはあなたのニーズに合うでしょう。このプロジェクトをご覧ください: https://github.com/betzerra/MosaicLayout

100%があなたの要件を完全に満たすかどうかはわかりませんが、最悪の場合、カスタムUICollecionViewFlowLayoutを書くのに役立つかもしれません(これがあなたの目標を達成する唯一の方法です)

17

基本的な実装(サブクラス化なし)でグリッドレイアウトを作成する標準のUICollectionViewFlowLayoutを使用して、質問のような結果を達成することはできません。

必要なものを取得するには、独自のUICollectionViewLayout(またはUICollectionViewFlowLayout)サブクラスを作成し、すべてのアイテムを適切なフレームに配置するために必要なすべての計算を実行する必要があります。

素晴らしいチュートリアル についてはこちらを、そして あなたが望むものに似たもの についてはこちらをご覧ください。

4

行の画像の可変高を作成する代わりに、同じサイズの画像の高さを修正しますが、行の幅を変えることができます。このような組み合わせと表示を作成すると、行の異なる幅の1つ以上の画像で同じセルを異なる高さに再利用できます。私はあなたがGoogle画像検索のように探しているのと同じ感覚を与えます

2