[Résolu] Collapse d'une collectionViewCell?
Salut,
j'aimerais avoir une liste de collectionViewCell qui affichent des images, et quand on clique sur une image, une vue (blanche) s'affiche entre deux images.
J'ai pensé placer chaque cell au départ (1 image, 1 vue blanche, et ainsi de suite) et jouer sur la frame de la cell blanche. Mais ça ne marche pas, la cell blanche laisse un trou à la place. Sauriez-vous comment faire cet effet?
Voici le code de chaque cell :
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if indexPath.row % 2 == 0{
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("CellImage", forIndexPath: indexPath) as MyCell
cell.frame.origin.x = 0
cell.imageView.image = photos[indexPath.row/2]
cell.addGestureRecognizer(tap)
println("cell.frame : \(cell.frame)")
return cell
} else {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("CellBlank", forIndexPath: indexPath) as CellBlank
cell.frame = CGRectZero
cell.labels = labels
cell.backgroundColor = UIColor.whiteColor()
return cell
}
}
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
- soit via la valeur que tu as mis dans la propriété tableView.rowHeight si tu veux que toutes tes cellules aient la même hauteur
- soit via la valeur que tu renvoies dans ton implémentation de tableView(heightForRowAtIndexPath:) si t'es cellules doivent avoir une hauteur différente selon leur indexPath (comme dans ton cas pour tes cellules blanches)
Voir le TableView Programming Guide dans la doc Apple qui explique toutes les bases et concepts de UITableView, ainsi que la doc de UITableViewDelegate
Super, merci. Exact Joanna, ce n'est pas possible avec une collectionView? C'est pas grave, j'ai utilisé une tableview et ça marche bien.
Et encore une fois c'est via ton implémentation des méthodes de delegate que tu peux indiquer des hauteurs/tailles particulières pour certaines cellules plutôt que d'autre si tu ne veux pas qu'elles aient toutes la même taille, tout comme pour les UITableViews.
Dans le cas d'un UICollectionView utilisant un layout UICollectionViewFlowLayout (le cas le plus courant, et celui par défaut, où les cellules sont mises côte à côte puis passent à la ligne de haut en bas), c'est donc les méthodes de UICollectionViewDelegateFlowLayout qui te permettent ça, notamment avec la méthode "- collectionView:layout:sizeForItemAtIndexPath:"
Donc en somme exactement le même principe de base que celui que j'ai décrit pour UITableView.
Exact, merci.