Hi, I am trying to display custom image and the attributed text into the TableHeaderview. For this I am retrieving the HeaderCell of each TableColumn and setting its image and attributed text. Then I found out If I set image first and then text next, only attributed text shown with the default headerview background. If the Image is set after Text then Background image overlaps the text.
I am overriding NSTableView and doing two things. 1. setDrawsBackground:NO 2. Invoking empty drawBackgroundInClipRect:clipRect. Here is my code. - (void)setColumnHeaderOf:(id)identifier image:(NSImage*)image title:( NSString*)title { NSTableColumn *column=[self tableColumnWithIdentifier:identifier]; [[column headerCell] setCellAttribute:NSCellHasImageOnLeftOrBottom to: NSImageBelow]; [[column headerCell] setImage:image]; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:title]; NSMutableParagraphStyle * aParagraphStyle = [[[NSMutableParagraphStyle alloc] init] autorelease]; [aParagraphStyle setLineBreakMode:NSLineBreakByTruncatingTail]; [aParagraphStyle setAlignment:NSCenterTextAlignment]; CGFloat dividingFactor = 255.0f; NSMutableDictionary * aTitleAttributes = [[[NSMutableDictionary alloc] initWithObjectsAndKeys: [NSFont fontWithName:CP_FONT_NAME size:[NSFont systemFontSize]], NSFontAttributeName, aParagraphStyle, NSParagraphStyleAttributeName, nil] autorelease]; [aTitleAttributes setValue:[NSColor colorWithDeviceRed:(246/dividingFactor) green:(204/dividingFactor) blue:(37/dividingFactor) alpha:1.0f] forKey: NSForegroundColorAttributeName]; [attributedString addAttributes:aTitleAttributes range:NSMakeRange(0, [attributedString length])]; [[column headerCell] setAttributedStringValue:attributedString]; [attributedString release]; } - (void)awakeFromNib { NSLog(@"KBCustomTableView awakeFromNib"); [[self enclosingScrollView] setDrawsBackground:NO]; NSRect frameRect = [[self headerView] frame]; [[self headerView] setFrameSize:NSMakeSize(frameRect.size.width, 30)]; [self setColumnHeaderOf:@"Column1" image:[NSImage imageNamed:@"ColHdr1"] title:@"Column1"]; [self setColumnHeaderOf:@"Column2" image:[NSImage imageNamed:@"ColHdr2"] title:@"Column2"]; [self setColumnHeaderOf:@"Column3" image:[NSImage imageNamed:@"ColHdr3"] title:@"Column3"]; } - (void)drawBackgroundInClipRect:(NSRect)clipRect { NSLog(@"KBCustomTableView drawBackgroundInClipRect"); //[super drawBackgroundInClipRect:clipRect]; } Thanks in advance. Regards symadept _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com