Comment obtenir le nombre d'éléments de collectionview de la source de données
Je suis nouveau sur Collectionview
, mais pas sur iOS. Je suis à l'aide personnalisée Flowlayout pour mon collectionview. J'ai besoin de retourner contentsize basé sur le nombre d'éléments retournés par la CollectionView de la source de données. Est-il de toute façon de savoir combien d'éléments sont actuellement en flowlayout est collectionview?
@interface LatestNewsFlowLayout : UICollectionViewFlowLayout
-(id)initWithSize:(CGSize) size;
@end
@implementation LatestNewsFlowLayout
-(id)initWithSize:(CGSize) size {
self = [super init];
if (self) {
self.itemSize = size;
self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
self.sectionInset = UIEdgeInsetsMake(0, 10.0, 0, 0);
self.minimumLineSpacing = 5;
}
return self;
}
- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)oldBounds {
return YES;
}
-(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect {
NSArray *answer = [[super layoutAttributesForElementsInRect:rect] mutableCopy];
for(int i = 1; i < [answer count]; ++i) {
UICollectionViewLayoutAttributes *currentLayoutAttributes = answer[i];
UICollectionViewLayoutAttributes *prevLayoutAttributes = answer[i - 1];
NSInteger maximumSpacing = 5;
NSInteger origin = CGRectGetMaxX(prevLayoutAttributes.frame);
if(origin + maximumSpacing + currentLayoutAttributes.frame.size.width < self.collectionViewContentSize.width) {
CGRect frame = currentLayoutAttributes.frame;
frame.origin.x = origin + maximumSpacing;
currentLayoutAttributes.frame = frame;
}
}
return answer;
}
-(CGSize) collectionViewContentSize
{
CGSize size;
int numOfItems = ???
size.width = 100 * numOfItems;
size.height = 100;
return size;
}
Vous devez vous connecter pour publier un commentaire.
La UICollectionViewFlowLayout est une sous-classe de UICollectionViewLayout. Il devrait donc avoir accès à la UICollectionView qui faut savoir combien d'éléments y sont.
Vous devrez peut-être effectuer une itération sur la section pour obtenir le nombre total d'objets, si vous avez plus d'une section.
Vous pouvez obtenir le nombre de sections de la même façon:
Espérons que cette aide! 🙂
Si vous faites une propriété/prise appelée collectionView, essayez ceci:
Dans Swift, vous pouvez écrire le code suivant (à condition de disposer d'une source de données avec des sections et des articles):
Il suffit de remplacer
section
avec votre source de données, etitems
avec l'élément nom de la collection.Swifty solution est la suivante:
Maintenant
itemsCount
contient nombre total de collection afficher les éléments dans toutes les sections.