web-dev-qa-db-fra.com

UICollectionViewCell Bordure/Ombre

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.

31
itsame69

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;
}
71
James Dawson

Rapide

_ {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

  • Il n'est pas nécessaire d'importer QuartzCore dans Swift si vous avez déjà importé UIKit.
  • Si vous souhaitez également ajouter une ombre, voir cette réponse .
17
Suragch

Vous devez inclure le framework QuartzCore et importer l'en-tête dans votre classe:

#import <QuartzCore/QuartzCore.h>
7
Mundi

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
}
1
Naishta