Para cambiar la forma en que aparecen los encabezados de la tabla que necesita subclase NSTableHeaderCell, lleve a cabo su propio dibujo personalizado en uno de sus métodos de dibujo, luego vuelva a colocar las celdas de encabezado de cada columna con una instancia de la subclase.
También puede encontrar que necesita subclase NSTableHeaderView para dibujar el espacio donde no hay celdas de encabezado visibles, y para reemplazar el cornerView
de la vista de tabla.
Esto debería empezar:
for (NSTableColumn *column in [tableView tableColumns]) {
[column setHeaderCell:
[[[MyHeaderCell alloc]
initTextCell:[[column headerCell] stringValue]]
autorelease]];
}
Y aquí hay un punto de partida para una subclase de NSTableHeaderCell:
@interface MyHeaderCell : NSTableHeaderCell
{
}
- (void)drawWithFrame:(CGRect)cellFrame
highlighted:(BOOL)isHighlighted
inView:(NSView *)view;
@end
@implementation MyHeaderCell
- (void)drawWithFrame:(CGRect)cellFrame
highlighted:(BOOL)isHighlighted
inView:(NSView *)view
{
CGRect fillRect, borderRect;
CGRectDivide(cellFrame, &borderRect, &fillRect, 1.0, CGRectMaxYEdge);
NSGradient *gradient = [[NSGradient alloc]
initWithStartingColor:[NSColor whiteColor]
endingColor:[NSColor colorWithDeviceWhite:0.9 alpha:1.0]];
[gradient drawInRect:fillRect angle:90.0];
[gradient release];
if (isHighlighted) {
[[NSColor colorWithDeviceWhite:0.0 alpha:0.1] set];
NSRectFillUsingOperation(fillRect, NSCompositeSourceOver);
}
[[NSColor colorWithDeviceWhite:0.8 alpha:1.0] set];
NSRectFill(borderRect);
[self drawInteriorWithFrame:CGRectInset(fillRect, 0.0, 1.0) inView:view];
}
- (void)drawWithFrame:(CGRect)cellFrame inView:(NSView *)view
{
[self drawWithFrame:cellFrame highlighted:NO inView:view];
}
- (void)highlight:(BOOL)isHighlighted
withFrame:(NSRect)cellFrame
inView:(NSView *)view
{
[self drawWithFrame:cellFrame highlighted:isHighlighted inView:view];
}
@end
Esa es una excelente respuesta; Desearía haberlo encontrado hace dos días. Eso hubiera significado 48 horas menos de golpear mi cabeza en el escritorio. :-) – nomothetis
¡Gracias, me acabas de ahorrar horas de googl! –
Tengo esto pero lo quiero con bordes en los límites de tableheadercell, ¿cómo lograr eso? – Jesus