2009-06-17 10 views
68

Estoy tratando de establecer el color de fondo de UITableViewCell en transparente. Pero nada parece funcionar. Tengo algunas imágenes/botones dentro del tableViewCell y me gustaría hacer desaparecer el fondo blanco grouptableview para obtener un efecto "flotante" para las imágenes y los botones (como si no estuvieran dentro del tableview).Cómo crear una UITableViewCell con un fondo transparente

¿Alguna idea de cómo se podría lograr esto?

Respuesta

120

Si ambas las otras opciones no funcionan probar este

UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; 
backView.backgroundColor = [UIColor clearColor]; 
cell.backgroundView = backView; 
+14

myTable.backgroundColor = [UIColor clearColor]; ¡trabajó para mi! Gracias – sjobe

+7

Esto funcionó para mí también, aunque también tuve que usar: cell.backgroundColor = [UIColor clearColor]; –

+4

Tuve que usar cell.textLabel.backgroundColor = [UIColor clearColor] también! – Casebash

30

empezar con estos artículos para conseguir el color de fondo configurar correctamente:

http://howtomakeiphoneapps.com/2009/03/how-to-add-a-nice-background-image-to-your-grouped-table-view/

http://pessoal.org/blog/2009/02/25/customizing-the-background-border-colors-of-a-uitableview/

A continuación, probar todas las siguientes líneas:

[[cell contentView] setBackgroundColor:[UIColor clearColor]]; 
[[cell backgroundView] setBackgroundColor:[UIColor clearColor]]; 
[cell setBackgroundColor:[UIColor clearColor]]; 

hay más que una sola ver escondido en una UITableViewCell. Esto debería aclarar todos los que estén en tu camino.

+0

funciona perfectamente ... excepto una errata: setBbackgroundColor => setBackgroundColor –

+1

cell.contentView's backgroundColor parece ser la verdadera clave para mí. (Confirmado en iOS7 solamente) – bitwit

+0

eres increíble. +100 si pudiera – Katushai

2

que tenía un problema donde mi backgroundimage tableviewcell costumbre se recubrió con un fondo de marca blanca, he intentado todo y por último el establecimiento de fondo para borrar el color de el viewWillAppear hizo el truco.

 - (void)viewWillAppear:(BOOL)animated 
    { 
[super viewWillAppear:animated]; 
    self.tableView.backgroundColor = [UIColor clearColor]; // if this is not here, cell background image is covered with a white rectangle :S 
    } 

y en el rowForCellAtIndexPath puse la imagen de fondo:

if(!cell) { 
    cell = [[[UITableViewCell alloc] initWithFrame: ... 
    UIImageView *cellBG = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellbg.jpg"]]; 
    [cell setBackgroundView:cellBG]; 
    [cellBG release]; 
} 
40

Esto es en realidad respondió en la documentación de UITableViewCell. Por lo tanto, aunque tiene que configurar la transparencia en sus controles, el color de fondo de la celda real debe establecerse a continuación.

"Nota: Si desea cambiar el color de fondo de una celda (ajustando el color de fondo de una celda a través de la propiedad backgroundColor declarado por UIView) hay que hacerlo en el tableView: willDisplayCell: forRowAtIndexPath: Método del delegado y no en tableView: cellForRowAtIndexPath: del origen de datos. Los cambios en los colores de fondo de las celdas en una vista de tabla de estilo de grupo tienen un efecto en iOS 3.0 que es diferente de las versiones anteriores del sistema operativo. Ahora afecta al área dentro del rectángulo redondeado en lugar del área fuera de él ".

https://developer.apple.com/documentation/uikit/uitableviewcell

+0

Me salvaste la vida. Esta es la única solución que realmente funciona. –

+1

¡Si hubiera un Premio de la Academia para Codificadores, estarías ahora en posesión de un Oscar! – Sjakelien

11

Por defecto, el fondo de su UITableViewCell es blanco. Hacer myCell.backgroundColor = [UIColor clearColor]; hará que su UITableViewCell sea transparente, PERO no notará la diferencia porque el UITableView (la contención de su UITableViewCell) también tiene un fondo blanco por defecto.

Si quieres ver su fondo UIView que tendrá que hacer su celular y su fondo de la tabla transparente:

myTableView.backgroundColor = [UIColor clearColor]; 
myTableCell.backgroundColor = [UIColor clearColor]; 

Martin Magakian

25
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    cell.backgroundColor = [UIColor clearColor]; 
    cell.backgroundView.backgroundColor = [UIColor clearColor]; 
} 
+1

Si su vista de tabla tiene un color de fondo y desea que su celda sea transparente para que pueda ver el color de fondo de la vista de tabla, esta es la solución correcta. –

+0

¿Cómo esta no es la ÚNICA respuesta? Funciona de maravilla. –

17

tengo una solución simple

Objetivo-c versión:

cell.backgroundColor = [UIColor clearColor]; 

Swift versión:

cell.backgroundColor = UIColor.clearColor() 
+0

pero siempre configúrelo dentro - (vacío) tableView: (UITableView *) tableView willDisplayCell: (UITableViewCell *) celda forRowAtIndexPath: (NSIndexPath *) indexPath –

3

Si está utilizando guiones gráficos, asegúrese de desmarcar "opaco" para sus UITableViewCells prototipo

Cuestiones relacionadas