L'ajout d'une sous-vue à un UICollectionViewCell qui occupe la totalité de la cellule de trame
Je suis en train d'ajouter simplement une UIView à un UICollectionViewCell qui reprend l'intégralité de la cellule du cadre. Le code que j'ai maintenant n'affiche qu'une seule cellule dans le coin en haut à gauche (je soupçonne que chaque cellule se couche sur le dessus de l'autre). Exactement comment puis-je faire cela?
J'ai l'intention de sous-classement UIView tard pour personnaliser la vue que j'ai ajouté à la cellule. Je ne veux pas sous-classe UICollectionViewCell toutefois, d'après la façon dont je vais l'utiliser.
#pragma mark - Collection view data source
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return 6;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
UIView *menuItem = [[UIView alloc] init];
menuItem.frame = cell.frame;
menuItem.backgroundColor = [UIColor greenColor];
[cell addSubview:menuItem];
return cell;
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath; {
return CGSizeMake(60, 60);
}
pourriez-vous changer menuItem.frame = cellule.cadre de menuItem.frame = cellule.limites
OriginalL'auteur DBoyer | 2014-01-04
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin d'utiliser
bounds
, pasframe
. Si vous ne connaissez pas la différence entre les deux, ou pourquoi c'est important, vous devriez lire sur ce et mettre à l'aise avec elle avant d'aller plus loin:Vous aurez également besoin de définir une d'un redimensionnement automatique de masque, car la cellule ne sera pas, au départ, être à la bonne taille:
Et, vraiment, vous devriez être en ajoutant ceci à la cellule
contentView
propriété:Cela dit, si vous envisagez sur l'ajout de beaucoup de sous-vues à
menuItem
, je vous recommande de sous-classement UICollectionViewCell au lieu d'essayer de construire dans votrecellForItemAtIndexPath:
méthode. Il sera beaucoup plus facile de contrôler si la mise en page et la configuration est encapsulé dans une classe différente, et vous pouvez répondre à la hauteur /largeur de changements en remplaçantlayoutSubviews
.Grand bout d'un redimensionnement automatique avec un masque... j'ai essayé de résoudre ce problème (mauvais dimensionnement d'abord) pour un LONG moment maintenant..merci!
Je suis maintenant d'avoir des problèmes avec la réutilisables cellule... si j'ajoute une sous-vue à la cellule numéro 1, puis iOS réutilise, et il apparaît dans la cellule de 17 ou 18 ans. Toutes les solutions?
kitty c'est la façon dont les cellules de table de travail... si vous ajoutez un point de vue, il va y rester jusqu'à ce que vous la modifier ou la supprimer
J'ai fini le nettoyage de la vue dans la prepareForReuse méthode. Merci pour votre réponse!
OriginalL'auteur Aaron Brager
Vous ne devez interagir avec la cellule
contentView
dans ce cas.OriginalL'auteur Nick