web-dev-qa-db-fra.com

Taille dynamique de la cellule UICollectionView

enter image description here

1) Comment puis-je atteindre comme indiqué dans l'image avec UICollectionView?

2) J'ai essayé la méthode -(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath et passé différentes tailles, mais elle laisse des espaces entre les cellules. Puis-je vider ces espaces? Je veux différentes hauteur et largeur pour chaque cellule

sortie actuelle: enter image description here.

54
Akshit Zaveri

Désolé, c'est trop tard ... Mais peut-être que cela aidera les personnes qui n'ont pas encore trouvé de réponse. Si vous avez vos images dans un tableau, vous pouvez simplement référencer la taille de l'image et faire les ajustements à la taille de la cellule à partir de là:

- (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); 
}

J'espère que cela t'aides..

49
RobMillerJ25

Peut-être que cette mise en page répondra à vos besoins. S'il vous plaît jeter un oeil à ce projet: https://github.com/betzerra/MosaicLayout

Je ne suis pas sûr à 100% qu'il réponde totalement à vos exigences, mais dans le pire des cas, il pourra vous aider à rédiger votre UICollecionViewFlowLayout personnalisé (le seul moyen d'atteindre votre objectif).

17

Vous ne pouvez pas obtenir un résultat comme celui de votre question avec la norme UICollectionViewFlowLayout, qui, dans son implémentation de base (sans sous-classement), crée une présentation de grille.

Pour obtenir ce que vous voulez, vous devez créer votre propre sous-classe UICollectionViewLayout (ou peut-être UICollectionViewFlowLayout), dans laquelle vous effectuez tous les calculs nécessaires pour placer chaque élément dans le cadre approprié.

Jetez un coup d'oeil ici pour un bon tutoriel et ici pour quelque chose de similaire à ce que vous voulez .

4
Alessandro Orrù

Au lieu de créer des hauteurs variables dans une rangée, fixez les mêmes hauteurs, mais vous pouvez avoir différentes largeurs dans une rangée.Créez ces combinaisons et affichez-les et vous pourrez réutiliser la même cellule à différentes hauteurs avec une ou plusieurs images de largeurs différentes dans la rangée. . j'ai fait la même chose, ça donne la même sensation que vous cherchez comme google images search

2