Pregunta

Estoy luchando con tratando de encontrar una manera elegante de mostrar los encabezados de columna de una vista de tabla de manera vertical (girado 90 grados hacia la izquierda desde la tradicional). No estoy casada a hacer esto como un NSTableHeaderCell real, pensé que podría ser más fácil hacerlo por razones imperiosas NSTextFieldCell o NSCell.

Las células sólo contienen texto no editable, pero es por lo general dos líneas de la misma, y ??a veces se tiñen con el resto de la columna en función del contexto.

Me parece que no puede encontrar ninguna de las aplicaciones de cacao que hacen esto, y mucho menos un ejemplo de código abierto. ¿Alguna idea?

¿Fue útil?

Solución

#import "VerticalTextCell.h"

@implementation VerticalTextCell

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {

    NSMutableDictionary *atr = [NSMutableDictionary dictionary];
    NSFont *font = [NSFont fontWithName:@"Lucida Grande" size:12];
    [atr setObject:font forKey:NSFontAttributeName];

    [[[self backgroundColor] colorWithAlphaComponent:0.7] set];
    NSRectFillUsingOperation(cellFrame, NSCompositeSourceOver);

    NSGraphicsContext *currentContext = [NSGraphicsContext currentContext];
    [currentContext saveGraphicsState];

    NSAffineTransform *transform = [NSAffineTransform transform];
    [transform translateXBy:NSMinX(cellFrame) yBy:NSMinY(cellFrame)];
    [transform rotateByDegrees:-90];
    [transform concat];

    // vertical inset 5 pixels
    [[self stringValue] drawInRect:NSMakeRect(-NSHeight(cellFrame),5,NSHeight(cellFrame),NSWidth(cellFrame)) withAttributes:atr]; 

    [currentContext restoreGraphicsState];

}


@end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top