objective-c - custom - uicollectionview header
UICollectionViewCell Border/Shadow (4)
Al construir una aplicación para iPad, ¿cómo se puede dibujar un borde alrededor de una UICollectionViewCell?
Más detalles: implementé una clase ProductCell que extiende UICollectionViewCell. Ahora, me gustaría asignar algunos detalles extravagantes, por ejemplo, un borde, una sombra, etc. Sin embargo, al intentar usar algo como esto aquí , Xcode me dice que el tipo de receptor "CALayer" es una declaración hacia adelante.
Rápido
Actualizado para Swift 3
Suponiendo que haya configurado su Vista de colección con los métodos necesarios , solo puede escribir algunas líneas de código para agregar el borde.
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
}
Notas
- No es necesario importar
QuartzCore
en Swift si ya importóUIKit
. - Si también desea agregar sombra, vea esta respuesta .
Solo por un poco más de implementación:
#import <QuartzCore/QuartzCore.h>
en su.m
Asegúrate de que tu clase implemente
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath;
ya que aquí es donde se instala la celda.
A continuación, puede cambiar cell.layer.background
(solo disponible una vez que se haya importado el cuarzo)
Vea abajo
- (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;
}
QuartzCore
incluir el marco QuartzCore
e importar el encabezado en su clase:
#import <QuartzCore/QuartzCore.h>
Swift 4
cell.layer.borderColor = UIColor.black.cgColor
cell.layer.borderWidth = 1
Añádalo en el método de fuente de datos, después de crear la celda
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
}