Estoy casi seguro de que no se puede hacer esto fácilmente. Utilicé una de mis solicitudes de soporte técnico en mi cuenta de desarrollador recientemente preguntando sobre la alteración del fondo y los bordes de las secciones de UITableView. El ingeniero de Apple me dijo que esto realmente no era algo fácil de hacer, e incluso si lograras hacerlo, probablemente afectarías el rendimiento. También me señaló a cocoawithlove y un artículo sobre uitableviews edición:
http://cocoawithlove.com/2009/08/adding-shadow-effects-to-uitableview.html
En realidad, la creación de su propia cabecera no es mucho esfuerzo. A continuación se muestra un código saqué de uno de mis proyectos - se comentó a cabo, por lo que podría no funcionar de inmediato - pero se puede conseguir la idea:
- (CAGradientLayer *) greyGradient {
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.startPoint = CGPointMake(0.5, 0.0);
gradient.endPoint = CGPointMake(0.5, 1.0);
UIColor *color1 = [UIColor colorWithRed:255.0f/255.0f green:255.0f/255.0f blue:255.0f/255.0f alpha:1.0];
UIColor *color2 = [UIColor colorWithRed:240.0f/255.0f green:240.0f/255.0f blue:240.0f/255.0f alpha:1.0];
[gradient setColors:[NSArray arrayWithObjects:(id)color1.CGColor, (id)color2.CGColor, nil]];
return gradient;
}
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
CGFloat width = CGRectGetWidth(tableView.bounds);
CGFloat height = [self tableView:tableView heightForHeaderInSection:section];
UIView *container = [[[UIView alloc] initWithFrame:CGRectMake(0,0,width,height)] autorelease];
container.layer.borderColor = [UIColor grayColor].CGColor;
container.layer.borderWidth = 1.0f;
CAGradientLayer *gradient = [self greyGradient];
gradient.frame = container.bounds;
[container.layer addSublayer:gradient];
UILabel *headerLabel = [[[UILabel alloc] initWithFrame:CGRectMake(12,0,width,height)] autorelease];
headerLabel.backgroundColor = [UIColor clearColor];
headerLabel.font= [UIFont boldSystemFontOfSize:19.0f];
headerLabel.shadowOffset = CGSizeMake(1, 1);
headerLabel.textColor = [UIColor whiteColor];
headerLabel.shadowColor = [UIColor darkGrayColor];
NSString *title = [self tableView:tableView titleForHeaderInSection:section];
headerLabel.text = title;
return container;
}
Asegúrese de
#import <QuartzCore/QuartzCore.h>
Por De la manera ... esto no se supone que imite el aspecto de los encabezados estándar, es solo un ejemplo. Pero estoy seguro de que con un poco de prueba y error podría alterar esto para imitar a los estándares y luego cambiar los colores ligeramente.
Parece que falta algo en su texto ... # importa qué? Probablemente algunas cosas de animación central? – Thorsten
Oh sí, fue QuartzCore para usar CAGradientLayer - Lo agregaré a la publicación. Gracias – bandejapaisa
También falta [container addSubview: headerLabel], y realmente es mejor si haces algo como esto: \t CGFloat width = tableView.bounds.size.width; \t CGFloat height = [self tableView: tableView heightForHeaderInSection: section]; UIView * contenedor = [[UIView alloc] initWithFrame: CGRectMake (0,0, ancho, alto)]; –