tutorial custom collection objective-c uicollectionview uicollectionviewcell

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 }