iphone - example - uitableview swift 4
Cómo crear una UITableViewCell con un fondo transparente (9)
Estoy tratando de establecer el color de fondo de una UITableViewCell
a transparente. Pero nada parece funcionar. Tengo algunas imágenes / botones dentro de tableViewCell
y me gustaría hacer desaparecer el fondo blanco de la grouptableview
para obtener un efecto "flotante" para las imágenes y los botones (como si no estuvieran dentro de la vista de tableview
).
¿Alguna idea de cómo se podría lograr esto?
Aquí está mi solución en Swift 4.1:
override func viewDidLoad() {
super.viewDidLoad()
tableView.backgroundView = UIImageView(image: "Image")
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
cell.backgroundColor = UIColor.clear
{
Comience con estos artículos para configurar correctamente el color de fondo:
http://pessoal.org/blog/2009/02/25/customizing-the-background-border-colors-of-a-uitableview/
Luego prueba todas las siguientes líneas:
[[cell contentView] setBackgroundColor:[UIColor clearColor]];
[[cell backgroundView] setBackgroundColor:[UIColor clearColor]];
[cell setBackgroundColor:[UIColor clearColor]];
Hay más de una vista escondida en una UITableViewCell. Esto debería aclarar todos los que estén en tu camino.
Esto en realidad se responde en los documentos de UITableViewCell. Por lo tanto, si bien tiene que configurar la transparencia en sus controles, el color de fondo de la celda real se debe establecer por debajo.
"Nota: si desea cambiar el color de fondo de una celda (estableciendo el color de fondo de una celda a través de la propiedad backgroundColor declarada por UIView) debe hacerlo en el método tableView: willDisplayCell: forRowAtIndexPath: del delegado y no en tableView: cellForRowAtIndexPath: de la fuente de datos. Los cambios en los colores de fondo de las celdas en una vista de tabla de estilo grupal tienen un efecto en iOS 3.0 que es diferente a las versiones anteriores del sistema operativo. Ahora afecta el área dentro del rectángulo redondeado del área fuera de él ".
https://developer.apple.com/documentation/uikit/uitableviewcell
Por defecto, el fondo de su UITableViewCell es blanco. Realizando 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 quiere ver su fondo UIView, tendrá que hacer que su celda y su fondo de mesa sean transparentes:
myTableView.backgroundColor = [UIColor clearColor];
myTableCell.backgroundColor = [UIColor clearColor];
Martin Magakian
Si está utilizando guiones gráficos, asegúrese de desmarcar "Opaco" para su prototipo UITableViewCells
Si las otras dos opciones no funcionaron, intente esto
UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;
Tuve un problema en el que mi fondo de escritorio de tableviewcell personalizado se superpuso con un fondo de etiqueta blanca, lo intenté todo y, finalmente, establecí el fondo para borrar el color en la vista. WillAppear 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 rowForCellAtIndexPath configuro la imagen de fondo:
if(!cell) {
cell = [[[UITableViewCell alloc] initWithFrame: ...
UIImageView *cellBG = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellbg.jpg"]];
[cell setBackgroundView:cellBG];
[cellBG release];
}
Tengo una solución simple
Versión Objective-c :
cell.backgroundColor = [UIColor clearColor];
Versión Swift :
cell.backgroundColor = UIColor.clearColor()
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.backgroundColor = [UIColor clearColor];
cell.backgroundView.backgroundColor = [UIColor clearColor];
}