• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Background image of CustomTableView Cells
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Background image of CustomTableView Cells


  • Subject: Re: Background image of CustomTableView Cells
  • From: Symadept <email@hidden>
  • Date: Fri, 16 Oct 2009 10:43:21 +0800

Hi,Can anybody please help me regarding this.

Regards
Symadept

On Wed, Oct 14, 2009 at 6:50 PM, Symadept <email@hidden> wrote:

>
> Hi,
> Can you help me to fix this problem.
>
> I am customizing my table view to show various images in the background of
> the cells accordingly as
>
> Selected : Font Changed to While Colour, Background image, Highlighted.png
> Deselected/Normal: Font -> Black colour, Bg Image: Default.png
>
> I tried to override
>  - (void)drawInteriorWithFrame:(NSRect)theCellFrame inView:(NSView*)theControlView
>
>  of NSCell to change the Font Color and BgImage according to the state as I
> mentioned earlier.
>
> Result: Once the application launched it is ok. Once I select col1 and
> select col2, my Col1 still shows the Highlighted image, infact it is
> deselected and supposed to show the Default Image. This because my Default
> image is a transparent image. Even after overlapping Default.png on
> Highlighted.png it is showing the same Highlighted.png.
>
> I guess what I need to do is to remove the image from the Cell before
> redrawing it. How to do I really don't know.
>
> Kindly look into this and help me in this regards.
>
> //// CustomTableCell
>
> @interface CustomTableCell : NSCell {
>
>
> }
>
>
> @end
>
>
> #import "CustomTableCell.h"
>
>
>
> @implementation CustomTableCell
>
> - (void)drawInteriorWithFrame:(NSRect)theCellFrame inView:(NSView*)theControlView
>
> {
>
> NSLog(@"CustomTableCell drawInteriorWithFrame");
>
> NSImage *bgImage = [NSImage imageNamed:@"DefaultCell"];
>
>  // Make attributes for our strings
>
> NSMutableParagraphStyle * aParagraphStyle = [[[NSMutableParagraphStyle
> alloc] init] autorelease];
>
> [aParagraphStyle setLineBreakMode:NSLineBreakByTruncatingTail];
>
> [aParagraphStyle setAlignment:NSCenterTextAlignment];
>
>    // Title attributes: system font, 14pt, black, truncate tail
>
> NSMutableDictionary * aTitleAttributes = [[[NSMutableDictionary alloc]
> initWithObjectsAndKeys:
>
>    [NSColor blackColor],NSForegroundColorAttributeName,
>
>    [NSFont systemFontOfSize:21.0],NSFontAttributeName,
>
>    aParagraphStyle, NSParagraphStyleAttributeName,
>
>    nil] autorelease];
>
>  // Make a Title string
>
> NSString * aTitle = [self stringValue];
>
> NSLog(@"CellFrame:[%f %f] [%f %f]", theCellFrame.origin.x, theCellFrame.
> origin.y, theCellFrame.size.width, theCellFrame.size.height);
>
> NSRect anIconBox = theCellFrame;
>
> NSRect aTitleBox = NSMakeRect(theCellFrame.origin.x,
>
>   theCellFrame.origin.y + theCellFrame.size.height/2-10,
>
>   theCellFrame.size.width,
>
>   theCellFrame.size.height);
>
>
>  if( [self isHighlighted])
>
> {
>
> // if the cell is highlighted, draw the text white
>
> [aTitleAttributes setValue:[NSColor whiteColor] forKey:
> NSForegroundColorAttributeName];
>
> bgImage = [NSImage imageNamed:@"FocusedCell"];
>
> }
>
> else
>
> {
>
> // if the cell is not highlighted, draw the title black and the subtile
> gray
>
> [aTitleAttributes setValue:[NSColor orangeColor] forKey:
> NSForegroundColorAttributeName];
>
> }
>
>  // Draw the icon
>
> [bgImage drawInRect:anIconBox fromRect:NSZeroRect operation:
> NSCompositePlusLighter fraction:1.0];
>
>  // Draw the text
>
> [aTitle drawInRect:aTitleBox withAttributes:aTitleAttributes];
>
> }
>
> @end
>
>
> //// CustomTableView
>
> @interface CustomTableView : NSTableView {
>
>
> }
>
>
> @end
>
>
> #import "CustomTableView.h"
>
>
>
> @implementation CustomTableView
>
>
> - (void)awakeFromNib
>
> {
>
> NSLog(@"CustomTableView awakeFromNib");
>
> [[self enclosingScrollView] setDrawsBackground:NO];
>
> }
>
>
> - (void)drawBackgroundInClipRect:(NSRect)clipRect
>
> {
>
> NSLog(@"CustomTableView drawBackgroundInClipRect");
>
> }
>
>
> #pragma mark -
>
> #pragma mark Selection Highlighting
>
>
> - (id)_highlightColorForCell:(NSCell *)cell
>
> {
>
> // we need to override this to return nil
>
> // or we'll see the default selection rectangle when the app is running
>
> // in any OS before leopard
>
>  // you can also return a color if you simply want to change the table's
> default selection color
>
>     return nil;
>
> }
>
>
> @end
>
>
> Thanks in advance
>
> Regards
> symadept
>
>
>
_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

References: 
 >Background image of CustomTableView Cells (From: Symadept <email@hidden>)

  • Prev by Date: Re: Custom NSComboBox
  • Next by Date: Re: Custom NSComboBox
  • Previous by thread: Background image of CustomTableView Cells
  • Next by thread: Custom NSComboBox
  • Index(es):
    • Date
    • Thread