Así que ya revisé varias publicaciones sobre cómo agregar una segunda vista para agregar sombras, pero todavía no puedo hacer que funcione si quiero agregarlas UICollectionViewCell
. Subclasé UICollectionViewCell
, y aquí está mi código donde agrego varios elementos de la interfaz de usuario a la vista de contenido de la celda y agrego sombra a la capa:
[self.contentView setBackgroundColor:[UIColor whiteColor]];
self.layer.masksToBounds = NO;
self.layer.shadowOffset = CGSizeMake(0, 1);
self.layer.shadowRadius = 1.0;
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowOpacity = 0.5;
[self.layer setShadowPath:[[UIBezierPath bezierPathWithRect:self.bounds] CGPath]];
Me gustaría saber cómo agregar esquinas redondeadas y sombras UICollectionViewCell
.
iphone
ios
uicollectionviewcell
Vincent Yiu
fuente
fuente
Respuestas:
Ninguna de estas soluciones funcionó para mí. Si coloca todas sus subvistas en la vista de contenido UICollectionViewCell, que probablemente sea, puede establecer la sombra en la capa de la celda y el borde en la capa de contentView para lograr ambos resultados.
Swift 3.0
fuente
cell.layer.backgroundColor = [UIColor clearColor].CGColor;
Versión Swift 3:
fuente
En caso de que sirva de ayuda: aquí está la rapidez para redondear las esquinas:
con celda como una variable que controla la celda: a menudo, usará esto en
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
¡Disfrutar!
fuente
Aquí la solución Swift 4 , actualizada para redondear todas las esquinas y no solo las esquinas superiores:
fuente
Establezca los
layer
atributos de la celda, nocontentView
.fuente
SWIFT 4.2
Uno debe agregar esto en su celda personalizada o cellForItemAt: Si está utilizando cellForItemAt: enfoque sustituto self -> celda
Esto le dará una celda con un borde redondeado y una sombra paralela.
fuente
Aquí está mi respuesta, cercana a las demás, pero agrego un radio de esquina a la capa, de lo contrario, las esquinas no se llenarán correctamente. Además, esto hace una pequeña extensión agradable en
UICollectionViewCell
.}
Puede llamarlo desde
collectionView(_:cellForItemAt:)
la fuente de datos una vez que retire la cola de su celda.fuente
Simplemente necesita (a) establecer
cornerRadius
y (b) establecershadowPath
para que sea un rectángulo redondeado con el mismo radio quecornerRadius
:fuente
Tuve que hacer algunos cambios leves para Swift :
fuente
La respuesta de Mike Sabatini funciona bien, si configura las propiedades de la celda directamente en collectionView cellForItemAt, pero si intenta configurarlas en awakeFromNib () de una subclase UICollectionViewCell personalizada, terminará con un bezierPath incorrecto configurado en los dispositivos que no no coincide con el ancho y el alto establecidos previamente en su Storyboard (IB).
La solución para mí fue crear una función dentro de la subclase de UICollectionViewCell y llamarla desde cellForItemAt así:
Y en CustomCollectionViewCell.swift:
fuente
Este funcionó para mi
fuente
Utilizo el siguiente método para lograr este tipo de efecto:
fuente
Puede establecer el color de la sombra, el radio y el desplazamiento en el método UICollectionViewDataSource mientras crea una UICollectionViewCell
fuente
Aquí está mi opinión sobre la solución. Es similar a otras respuestas, con una diferencia clave. No crea una ruta que dependa de los límites de la vista. Cada vez que crea una ruta basada en los límites y la proporciona a la capa, puede tener problemas al cambiar el tamaño y necesita configurar métodos para actualizar la ruta.
Una solución más sencilla es evitar el uso de cualquier elemento que dependa de los límites.
Ahora, cuando el tamaño de las celdas cambie, la API de vista hará todo el trabajo internamente.
fuente
Encontré algo importante: UICollectionViewCell debe tener backgroundColor como
clear
color para que estos funcionen.fuente