No pude obtener la respuesta aceptada para el trabajo; no es que yo piense que la respuesta es incorrecta (ni mucho menos, eso parece ser el Camino Correcto), pero mientras escribía mi primera aplicación iOS mi cabeza ya estaba girando con subclases. Así que decidí hacer trampa.
Digamos que la celda personalizada fue controlada por una clase TableViewCell
. Creé un único archivo de píxel .png
del color de fondo correcto y creé un objeto UIImageView
en mi celda personalizada. Utilicé el inspector de Atributos para establecer la imagen por defecto y usé 'Escalar para rellenar'. Por un poco más atractivo visual, que luego añadió lo siguiente al tiempo de ejecución de atributos definidos por el usuario en el inspector de Identidad:
KeyPath Type Value
layer.cornerRadius Number 4
layer.masksToBounds Boolean YES
Voilá, esquinas redondeadas en el barato.
Posicionado directamente detrás de UILabel, se ve el negocio, aunque obviamente no cambiará el tamaño del contenido (ya que el único contenido es su propia imagen). No es un problema para mí, ya que los datos que se muestran deben tener un tamaño fijo de todos modos.
En algunos valores que era bueno tener un color diferente, que se pueden ajustar con mucha facilidad:
cell.deviceDetailBackground.image = [UIImage imageNamed:@"detailBackground2.png"];
Donde 'célula' es la encarnación de mi celda personalizado en el método cellForRowAtIndexPath
, creado usando TableViewCell *cell;
. ¿No hay información para mostrar?
cell.deviceDetailBackground.image = nil;
Estoy seguro de que habrá una buena razón por la que esto es una idea tonta, pero como yo estoy empezando con el desarrollo de iOS esto era una solución fácil que trabajó para mí. Siéntase libre de decirme por qué no hacerlo!
Nunca pensé en eso, es una buena idea. Por el momento he subclasificado el UITableViewCell y he reemplazado el marcador y los métodos seleccionados para no cambiar el color de fondo de las subvistas seleccionadas, pero es un "hack" bastante desagradable –
¿Alguien puede explicar cómo funciona esta subclase? ¿Dónde deberíamos poner este código? en la misma clase viewController o una clase separada? – raw3d
Funciona como un encanto (y es uno de estos momentos de WTF en el desarrollo de iOS ...). –