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

Reply via email to