web-dev-qa-db-ja.com

UICollectionView ObjectiveCの2つの異なるセルサイズ

UICollectionViewを使用したいのですが、次のレイアウトを作成できます。

something like that...

ご覧のとおり、セルには2つの異なるサイズがあります。 1つは行の1/4で、もう1つは3/4です。 UICollectionViewを使用してこの種のレイアウトを作成することは可能ですか?

誰かが私にそれを行う方法を教えることができますか?またはサンプルはありますか?私はすでに多くのチュートリアルとリファレンスを研究しています。しかし、それでもそれを行う方法がわかりません。

ありがとう!

9
Yvonne

さて、当分の間、アイテムの幅をハードコーディングしました(72.0と23.0)。 5.0の残りの部分は、暫定的な間隔とedgeInsetsで使用されます。このコードはあなたが望むものを正確に与えるでしょう。

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
    return 10.0;
}

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
    return 10.0;
}

#pragma mark - CollectionViewFlowLayout Methods

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CGSize newSize = CGSizeZero;
    newSize.height = 100;

    CGRect screenBounds = [[UIScreen mainScreen] bounds];
    CGSize screenSize = screenBounds.size;

    if(indexPath.item % 4 == 0 || indexPath.item % 4 == 3)
    {
        // Size : 1/4th of screen
        newSize.width = screenSize.width * 0.23;
    }
    else
    {
        // Size : 3/4th of screen
        newSize.width = screenSize.width * 0.72;

    }
    return newSize;
}

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
    return UIEdgeInsetsMake(10, 2.0, 10, 2.0);
}
11
nithinbhaktha

それにはさまざまな方法があります。

  1. - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPathメソッドを実装することで実行できます。

  2. 次のチュートリアルで説明するように、コレクションビューを完全にカスタマイズできます。

    http://www.raywenderlich.com/107439/uicollectionview-custom-layout-tutorial-pinterest

  3. 目的のレイアウトからは、UITableviewCell(1/4サイズと3/4サイズの両方のセルを1つのセルに読み込む)を使用し、自動レイアウトでサイズを変更することで、外観を簡単に取得できるように見えます。 。

1
Mehul Thakkar
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{

    return [(NSString*)[arrayOfStats objectAtIndex:indexPath.row] sizeWithAttributes:NULL];
}

このメソッドを使用すると、セルに異なるサイズを返すことができます。このリンクを参照してください ラベル幅に応じたUICollectionViewの動的セル幅

0