Je voudrais utiliser UICollectionView, il est possible de créer la mise en page suivante:
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!
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);
}
Il y a différentes façons de le faire:
Vous pouvez le faire en implémentant la méthode - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
.
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
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.
- (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