web-dev-qa-db-fra.com

2 tailles de cellules différentes dans UICollectionView Objective C

Je voudrais utiliser UICollectionView, il est possible de créer la mise en page suivante:

 something like that...

Comme vous pouvez le constater, la cellule a deux tailles différentes. On est 1/4 de la ligne, l'autre est 3/4. Est-il possible de créer ce type de mise en page avec UICollectionView?

Quelqu'un pourrait-il m'apprendre à le faire? Ou y a-t-il des échantillons ??? J'ai déjà étudié de nombreux tutoriels et références. Mais toujours ne sais pas comment le faire ..

Merci!

8
Yvonne

Eh bien, j'ai codé en dur la largeur de l'article pour le moment (72.0 et 23.0). Le reste de la version 5.0 sera utilisé dans l’espacement intermédiaire et les arêtes périphériques. Ce code vous donnera exactement ce que vous voulez.

- (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

Il y a différentes façons de le faire:

  1. Vous pouvez le faire en implémentant la méthode - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath.

  2. Vous pouvez totalement personnaliser l'affichage de la collection, comme décrit dans le didacticiel suivant, étape par étape.

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

  3. Vous pouvez facilement obtenir une apparence de UITableviewCell (en chargeant les cellules de taille 1/4 et 3/4 dans une seule cellule) et en modifiant leur taille via la disposition automatique.

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

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

en utilisant cette méthode, vous pouvez retourner une taille différente pour la cellule. Veuillez consulter ce lien Largeur de cellule dynamique de UICollectionView en fonction de la largeur de l'étiquette

0
rohitk-iOSDev