Uicollection Viewcell Border / Shadow
lors de la construction d'une application iPad, Comment Pouvez-vous dessiner une bordure autour D'un UICollectionViewCell?
plus de détails: j'ai mis en œuvre une classe ProductCell qui étend Uicollection Viewcell. Maintenant, je voudrais assigner quelques détails fantaisistes, par exemple une bordure, une ombre, etc. Cependant, en essayant d'utiliser quelque chose comme ici , Xcode me dit que le type de récepteur 'CALayer' est une déclaration forward.
4 réponses
Juste pour un peu plus de mise en œuvre:
#import <QuartzCore/QuartzCore.h>
dans votre.m
assurez-vous que votre classe implémente
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath;
car c'est ici que la cellule est configurée.
vous pouvez alors changer cell.layer.background
(seulement disponible une fois que le quartz est 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;
}
Swift
mise à jour pour Swift 3
en supposant que vous avez votre vue Collection configuré avec les méthodes requises , vous pouvez juste écrire quelques lignes de code pour ajouter la frontière.
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
}
Notes
- Il n'est pas nécessaire d'importer
QuartzCore
rapide si vous avez déjà importéUIKit
. - si vous voulez aussi ajouter de l'ombre, alors voir cette réponse .
vous devez inclure le cadre 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
ajouter dans la méthode datasource, 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
}