ios - Cree UITableviewCell agrupado con selección personalizada Color y borde
ios5 (2)
Actualmente estoy escribiendo una aplicación que utiliza diferentes colores de selección en una vista de tabla agrupada. Esto funciona muy bien en lo que respecta a Borders. Puedo cambiar el color de selección con el código en esta publicación: ¿Cómo personalizar los colores de fondo / borde de una celda de vista de tabla agrupada?
PERO me gustaría tener además el bonito borde alrededor de las células que usa Apple. ¿Cómo puedo usar este borde?
http://www.mediafire.com/?x2gxbkjqu4d2zto
Este es el Código para crear el Fondo, en su mayoría copiado de la publicación anterior: http://www.mediafire.com/?kltwlni1mf4t7ks
Y así es como lo uso:
NSIndexPath * indexPath = [[[NSIndexPath alloc] initWithIndex:0] indexPathByAddingIndex:1];
CGRect frame = [[self tableView] rectForRowAtIndexPath:indexPath];
TLCustomCellBackgroundView * selectedBackgroundView = [[TLCustomCellBackgroundView alloc] initWithFrame:frame andColor:[UIColor redColor]];
[selectedBackgroundView setPosition:CustomCellBackgroundViewPositionBottom];
[[[self tableView] cellForRowAtIndexPath:indexPath] setSelectedBackgroundView:selectedBackgroundView];
Como pueden ver, casi lo hago funcionar correctamente, excepto por el borde gris alrededor de la segunda celda.
Encontré una Solución para esto. no es totalmente lo mismo (como UITableviewCell en Style agrupado tiene un diseño aún más sofisticado en iOS5 pero esto es suficiente para mí. Tomé prestado este enfoque de http://cocoawithlove.com/2010/12/uitableview-construction-drawing- and.html
y funciona genial!
El código que utilicé es: http://www.mediafire.com/?mdxkpfe8g74ctk9
Espero que esto ayude a otros
en cellForRowAtIndexPath puede establecer los Borders (Separator) para cada fila / sección.
if(indexPath.row == 1)
[tableView setSeparatorColor:[UIColor redColor]];
if(indexPath.section == 2)
[tableView setSeparatorColor:[UIColor greenColor]];
Solo recuerde configurar / restablecer esto para cada fila / sección que desee.
Si desea agregar el borde gris alrededor de su celda roja, sería
if(indexPath.section == 0 && indexPath.row == 1){
//assuming this is the correct index)
[tableView.separatorColor = [UIColor colorWithRed:0.67 green:0.67 blue:0.67 alpha:1];
}
else
{
[tableView.separatorColor = [UIColor yourChosenDefaultColor]];
}
Realmente necesita usar esto en su cellForRowAtIndexPath o va a establecer el borde para su TableView completo (tal vez eso es lo que quiere hacer)