Lors de la création d'une application iPad, comment pouvez-vous dessiner une bordure autour d'un UICollectionViewCell?
Plus de détails: j'ai implémenté une classe ProductCell qui étend UICollectionViewCell. Maintenant, je voudrais assigner quelques détails de fantaisie, par exemple. une bordure, une ombre, etc. Cependant, lorsque vous essayez d'utiliser quelque chose comme this ici , Xcode m'indique que le type de destinataire 'CALayer' est une déclaration aval.
Juste pour un peu plus d'implémentation:
#import <QuartzCore/QuartzCore.h>
en votre.m
Assurez-vous que votre classe implémente
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath;
car c'est là que la cellule est configurée.
Vous pouvez ensuite changer cell.layer.background
(disponible uniquement une fois le quartz importé)
Voir ci-dessous
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
MyCollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"pressieCell" forIndexPath:indexPath];
//other cell setup here
cell.layer.borderWidth=1.0f;
cell.layer.borderColor=[UIColor blueColor].CGColor;
return cell;
}
_ {Mis à jour pour Swift 3} _
En supposant que votre Collection View soit configuré avec les méthodes requises , vous pouvez simplement écrire quelques lignes de code pour ajouter la bordure.
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! MyCollectionViewCell
cell.myLabel.text = self.items[indexPath.item]
cell.backgroundColor = UIColor.cyan
// add a border
cell.layer.borderColor = UIColor.black.cgColor
cell.layer.borderWidth = 1
cell.layer.cornerRadius = 8 // optional
return cell
}
Remarques
QuartzCore
dans Swift si vous avez déjà importé UIKit
.Vous devez inclure le framework QuartzCore
et importer l'en-tête dans votre classe:
#import <QuartzCore/QuartzCore.h>
Swift 4
cell.layer.borderColor = UIColor.black.cgColor
cell.layer.borderWidth = 1
Ajoutez-le dans la méthode de source de données, après avoir créé la cellule
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath)
cell.layer.borderColor = UIColor.black.cgColor
cell.layer.borderWidth = 1
}