Ich möchte mein eigenes Spaltengrößenänderungsschema in einem NSTableView
implementieren. Ich habe das größtenteils funktioniert, aber ich kämpfe mit dem dynamischen Aussehen der vertikalen Bildlaufleiste.Benutzerdefiniertes columnAutoresizingStyle mit NSTableView
Stellen Sie sich vor, ich möchte eine Tabelle mit zwei Spalten haben, in der die erste immer 1/3 belegt und die andere die verbleibenden 2/3 des sichtbaren Raums.
Ich habe versucht, dies zu erreichen, indem die tile
Methode in einer Unterklasse von NSTableView
Umsetzung wie folgt:
- (void)tile
{
NSClipView *container = (NSClipView*) self.superview;
NSSize spacing = self.intercellSpacing;
CGFloat avail = container.frame.size.width;
CGFloat cw0 = (int) (avail/3);
CGFloat cw1 = avail - cw0;
self.tableColumns[0].width = cw0 - spacing.width;
self.tableColumns[1].width = cw1 - spacing.width;
[super tile];
}
Ich glaube, ich habe [super tile]
aufzurufen die Bildlaufleisten zu haben, wie notwendig hinzugefügt bekommen.
Das Problem ist jedoch, dass, wenn ich die Größe des Fensters (und damit auch die Größe der TableView), die horizontale Bildlaufleiste ist manchmal Teil der Clip-Ansicht und manchmal nicht, was zu Flackern führt.
Hier sind Beispiele, die ich erhalte, wenn die Größe des Fensters:
gutes Ergebnis:
Bad Ergebnis (beachten Sie die Tatsache, dass es eine horizontale Bildlaufleiste):
Während ich die Größe des Fensters ändern, fügen Sie in der Tabellenansicht immer wieder hinzu horizontale Bildlaufleiste, dadurch flackernd. Das möchte ich vermeiden.
Ich frage mich, wie die ursprüngliche tile
Funktion dies behandelt. Wie würde ich es aktivieren, damit ich nicht das Flackern bekomme, aber die Bildlaufleisten wie benötigt erscheinen?
Überschreiben '- [NSTableView] sizeLastColumnToFit'? – Willeke