/ / NSTableView и превъртане на фона NSColor: Автоматична еластичност Цвят - какао, nstableview, nsview

NSTableView и превъртане на фон NSColor: Автоматична еластичност Цвят - какао, nstableview, nsview

Успешно променях фона NSColor на моя NSTableView използвайки setBackgroundColor: и за двете NSTableView и NSCell (използвайки tableView: willDisplayCell:forTableColumn:row:). Сега бих искал фонът също така да има този цвят при превъртане (отгоре или отдолу), който понастоящем е бял, както е показано на снимката по-долу.

въведете описанието на изображението тук

Намерих тази връзка, която изглежда показва необходимостта от подклас NSTableView и прилагане
- (void)drawBackgroundInClipRect:(NSRect)clipRect, всяко предложение за това?

Източник: Тематични NSTableView

Отговори:

1 за отговор № 1

Най-накрая намерих отговора на въпроса, като разгледах заглавния файл за класа NSTableView NSTableView.h и намерихме споменаване на този метод:

/* Override to customize background drawing.
*/
- (void)drawBackgroundInClipRect:(NSRect)clipRect;

След това подкатегория NSTableView и overrode предишния метод:

@implementation MyColoredTableView

/**
Sets the color of the background for elastic scrollers
*/
- (void)drawBackgroundInClipRect:(NSRect)clipRect
{
[[NSColor redColor]set];    //Set your color here
NSRectFill(clipRect);
}

@end

Променете класа на вашия NSTableView в интерфейса Builder към MyColoredTableView, и сте готови.


0 за отговор № 2

> Сега бих искал фонът също така да има този цвят, когато> превърта (отгоре или отдолу),

За това трябва да имате един метод, който ще се извика, когато прелиствате изгледа си за превъртане. Затова просто включете това известие по-долу:

-(void)viewDidLoad
{

// This notification will called when you scroll your scrollview
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(boundsDidChange:) name:NSViewBoundsDidChangeNotification
object:[yourScrollView contentView]];
}

-(void)boundsDidChange:(NSNotification*)not
{
//Write your code for changing background colors of tableview
}