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.
Eu encontrei este link que parece indicar a necessidade de subclasse NSTableView
e implementar - (void)drawBackgroundInClipRect:(NSRect)clipRect
Alguma sugestão sobre isso?
Fonte : Tema de NSTableView
Respostas:
1 para resposta № 1Eu 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 MyColoredTableView
e 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
}