J'ai une vue de collection avec beaucoup de différentes images, et je veux que quand une image est tapotée, une bordure vient autour d'elle.UITapGestureRecognizer ne modifie pas le contenu de CollectionViewCell. Swift
J'ai créé une cellule personnalisée, et une UICollectionViewCell avec l'incorporation d'imageView dans une autre vue (qui est le contour) pour l'image. J'ai donc mis en place un UITapGestureRecognizer qui fonctionne pour obtenir l'index, mais lorsque je place la vue externe pour avoir un boder, ça ne marche pas.
Voici ma cellule:
import UIKit
class PicViewCell: UICollectionViewCell {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var imageOutline: UIView!
}
Ceci est mon UICollectionViewController:
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! PicViewCell
// Configure the cell
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(sender:)))
cell.imageOutline.addGestureRecognizer(tapGesture)
return cell
Voici la méthode pour la tapGesture
func handleTap(sender: UITapGestureRecognizer) {
print("tap")
if let indexPath = self.collectionView?.indexPathForItem(at: sender.location(in: self.collectionView)) {
let cell = collectionView?.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! PicViewCell
cell.imageOutline.layer.borderWidth = 5
} else {
print("")
}
}
Cela fonctionne très bien. Mais comme vous l'avez dit, lorsque je retourne à la cellule, elle ne reste pas délimitée. J'ai mis à jour le modèle, mais il ne reste pas défini. Merci – RJB
Dans 'collectionView (_: cellForItemAt:)' après avoir déplacé la cellule réutilisable, vous devez définir la couche borderWidth à 5 si votre modèle indique que la cellule a été tapée. – vacawama
Merci, vous m'avez aidé une tonne. – RJB