¿Cómo personalizar el color de fondo de la etiqueta estándar dentro de un UITableViewCell?
-
03-07-2019 - |
Pregunta
Durante las últimas horas he intentado descubrir cómo hacerlo, pero sin suerte. Existen varias soluciones potenciales para esto cuando se busca en Google, pero nada parece funcionar.
Estoy tratando de personalizar el color de fondo de la UILabel estándar que va en un UITableViewCell (ya que ya he personalizado el color de fondo de la celda), pero nada de lo que hago parece funcionar.
Estoy creando mi propia UILabel para personalizar los colores en -tableView: cellForRowAtIndexPath:
UILabel* label = [[[UILabel alloc] init] autorelease];
label.textColor = [UIColor blueColor];
label.backgroundColor = [UIColor redColor];
label.opaque = YES;
[cell.contentView addSubview:label];
cell.text = @"Sample text here";
Pero eso no funciona, y la vista de tabla resultante aún tiene un montón de celdas con etiquetas con texto negro y fondo blanco.
¿Alguna pista sobre lo que estoy haciendo mal aquí?
ACTUALIZACIÓN: si intento hacer lo siguiente:
UILabel* label = [[[UILabel alloc] init] autorelease];
label.textColor = [UIColor blueColor];
label.backgroundColor = [UIColor redColor];
label.opaque = YES;
[cell.contentView addSubview:label];
label.text = @"Sample text here";
Obtengo un montón de UITableViewCells sin texto en absoluto.
Solución
Parece que estás asignando el texto a la celda en lugar de a la etiqueta. Probablemente quieras:
label.text = @"Sample text here";
Además, deberá establecer el marco de la etiqueta para lo que necesite:
label.frame = CGRectMake(10,10, 80, 40);
o directamente en el constructor:
label = [[UILabel alloc] initWithFrame:myFrame];
Otros consejos
No haría esto en código. Lo haría con un archivo XIB personalizado y luego lo cargaría en su
- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
delegar la función. De esa manera, puede diseñar el archivo XIB a sus especificaciones exactas y modificarlo.
¡Buena suerte!
Has hecho esta pregunta antes y has recibido las respuestas correctas;