/ / NSTableView e rolagem de fundo NSColor: Automatic Elasticity Color - cacau, nstableview, nsview

NSTableView e rolagem de fundo NSColor: Automatic Elasticity Color - cacau, nstableview, nsview

Eu mudei com sucesso o plano de fundo NSColor do meu NSTableView usando setBackgroundColor: tanto para o NSTableView e a NSCell (usando tableView: willDisplayCell:forTableColumn:row:). Agora, gostaria que o plano de fundo também tivesse essa cor ao rolar para fora (na parte superior ou inferior), que é atualmente branco, conforme ilustrado abaixo.

insira a descrição da imagem aqui

Eu encontrei este link que parece indicar a necessidade de subclasse NSTableView e implementar
- (void)drawBackgroundInClipRect:(NSRect)clipRectAlguma sugestão sobre isso?

Fonte : Tema de NSTableView

Respostas:

1 para resposta № 1

Eu finalmente encontrei a resposta na questão, olhando para o arquivo de cabeçalho para a classe NSTableView NSTableView.h e encontrei uma menção a este método:

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

Eu então subclasse o NSTableView e anulei o método anterior:

@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

Mude a classe do seu NSTableView no InterfaceBuilder para MyColoredTableViewe você está feito.


0 para resposta № 2

> Agora, gostaria que o plano de fundo também tivesse essa cor ao rolar para fora (na parte superior ou inferior),

Para isso, você precisa ter um método que será chamado quando você rolar sua visualização de rolagem. Então, para isso, basta incluir esta notificação abaixo:

-(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
}