ios - uitableviewcell - UITableView fondo claro
uitableviewcell swift (21)
Me doy cuenta de que iOS 7 no se ha lanzado oficialmente y no deberíamos discutirlo PERO me estoy volviendo loco tratando de resolver este problema. En iOS 6, mi vista de tabla era transparente y se veía genial. La primera vez que ejecuta iOS 7, y el fondo es blanco.
He intentado hacer que la tabla backgroundColor, el color de la celda, etc., sea UIColor clearColor pero no tenga ningún cambio.
¿Cómo arreglar este problema?
Conjunto
tableView.backgroundColor = [UIColor clearColor];
en viewDidLoad.
si esto no funciona, intente:
tableView.backgroundView = nil;
En mi aplicación, tuve que configurar el backgroundColor
en mi clase UITableViewCell
para [UIColor clearColor]
color cuando actualicé para iOS 7
.
En mi caso, la celda fue creada usando un xib. parece que el constructor de interfaz en xcode5 tiene problemas para establecer clearColor en el cell.backgroundColor.
Todo lo que tenía que hacer era, de hecho, establecer
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// get the cell from the nib
//then force the backgroundColor
cell.backgroundColor = [UIColor clearColor]
return cell;
}
En realidad, el lugar correcto oficialmente para cambiar el color de fondo de la celda es diferente según la documentación ( UITableViewCell Class Reference ):
Ya sea que use una celda predefinida o personalizada, puede cambiar el fondo de la celda usando la propiedad backgroundView o cambiando la propiedad heredada de backgroundColor. En iOS 7, las celdas tienen un fondo blanco por defecto; en versiones anteriores de iOS, las celdas heredan el color de fondo de la vista de tabla adjunta. Si desea cambiar el color de fondo de una celda, hágalo en el método tableView: willDisplayCell: forRowAtIndexPath: de su delegado de la vista de tabla.
En veloz 3
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath)
cell.backgroundColor = .clear
cell.backgroundView = UIView()
cell.selectedBackgroundView = UIView()
return cell
}
Este es un problema bastante frustrante. Aquí está mi solución actual:
Agregue esto a su subclase UITableViewCell
.
- (void)didMoveToSuperview {
[super didMoveToSuperview];
self.backgroundColor = [UIColor clearColor];
}
Esto funcionó para mí en iOS7 +:
self.tableView.backgroundColor =[UIColor blueColor];
self.tableView.opaque = NO;
self.tableView.backgroundView = nil;`
y luego en cellForRowAtIndexPath:
cell.backgroundColor = [UIColor clearColor];
Esto ha sido respondido, pero incorrectamente en muchos sentidos.
Debe implementar el siguiente método delegado:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
[cell setBackgroundColor:[UIColor clearColor]];
}
No puede colocar la corrección en cellForRowAtIndexPath porque eso es después de que se represente la celda, y parpadeará un fondo blanco antes de que el fondo se configure para borrar (en dispositivos más lentos).
¡Usa este método delegado y tus problemas están resueltos!
Esto solo funcionó para mí cuando edité un color de fondo claro para cada celda y un color claro para la tabla en sí ... AMBOS PROGRAMÁTICAMENTE
para establecer el color claro para la tabla:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
initMenu()
myTableView.backgroundColor = UIColor.clearColor()
}
para establecer el color de las celdas:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("tablecellid", forIndexPath: indexPath)
cell.backgroundColor = UIColor.clearColor()
return cell
}
Intenta configurar backgroundView a nil primero.
[self.tableView setBackgroundView:nil];
[self.tableView setBackgroundColor:[UIColor clearColor]];
No estoy seguro si esto es un cambio en la documentación con iOS7 o si siempre ha estado allí y no ha afectado el color de fondo, pero de acuerdo con la referencia de clase de UITableView @property backgroundView
"Debe establecer esta propiedad en cero para establecer el color de fondo de la vista de tabla".
editar: sintaxis del código corregido
Primer set
tableView.backgroundColor = [UIColor clearColor];
Segundo set
tableCell.backgroundColor = [UIColor clearColor];
Simplemente seleccione Borrar color en Ver fondo para la tabla y también para la celda.
Tratar
[myTable setSeparatorStyle:UITableViewCellSeparatorStyleNone];
[myTable setSeparatorInset:UIEdgeInsetsZero];
Y
cell.backgroundColor = [UIColor clearColor];
Una cosa agradable. El color predeterminado de UITable parece ser blanco (no sé por qué)
Pero mejor cambiar eso.
crear IB Outlet para la vista de tabla @IBOutlet weak var yourTable: UITableView!
en vista carga
override func viewDidLoad() {
yourTable.delegate = self
yourTable.dataSource = self
yourTable.backgroundColor = UIColor.clearColor()
}
si desea borrar el color de la celda también hacer esto en
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
cell.backgroundColor = UIColor.clearColor()
}
prueba este fragmento de código
cell.contentView.backgroundColor = [UIColor clearColor];
cell.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.5];
rápido 3, 4
cell.backgroundColor = UIColor.clear
Pon esto:
cell.backgroundColor = [UIColor clearColor];
En esta sección:
cellForRowAtIndexPath
veloz 3
override func viewDidLoad() {
super.viewDidLoad()
tableView.backgroundColor = UIColor.clear
}
// Fix for iOS 7 to clear backgroundColor
cell.backgroundColor = [UIColor clearColor];
cell.backgroundView = [[UIView new] autorelease];
cell.selectedBackgroundView = [[UIView new] autorelease];
en cellForRowAtIndexPath
Además, asegúrese de que su tabla vista tenga fondo transparente (en el guión gráfico):
// Fix iOS 7 clear backgroundColor compatibility
// I Think this two lines only are enough
cell.backgroundColor = [UIColor clearColor];
cell.selectedBackgroundView = [[UIView new] autorelease];