2013-05-06 4 views
10

Ich bin auf der Suche nach der Trennfarbe in View basierend auf NSTableView entfernen.Ändern Sie die Farbe des Trennzeichens in den Hintergrund oder entfernen Sie es aus NSTableView

Es sieht wie folgt aus:

enter image description here

Für UITableView gibt es ein Verfahren setSeparatorColor: aber nicht für NSTableView.

Lösungen werden sehr geschätzt.

+0

http://stackoverflow.com/questions/3032802/nstableview-get-rid-blank-space-separating-columns – Harikrishnan

+0

@Harikrishnan: schon gecheckt, aber das hat nur bei mir nicht funktioniert, ich musste auch die viewSize vergrößern. –

Antwort

13

Ich tat dies, wie:

den Abstand Inter geändert:

[aTableView setIntercellSpacing:NSMakeSize(0, 0)]; 

und haben die Höhe der die Zelle, Breite eingestellt im Hinblick auf 30.f, wobei die Zelle von 35.f gezogen ist.

Jetzt ist es perfekt, Screenshot:

enter image description here

8

Für NSTableView, Interface Builder hat Einstellungen für Horizontal Grid, Vertical Grid und Grid Color. Diese werden in der API als -setGridStyleMask und setGridColor wiedergegeben.

Sie tun genau das, was Sie wollen.

[table setGridColor:[NSColor clearColor]]; 
[table setGridStyleMask:NSTableViewGridNone]; 
+0

Ich wollte transparente Farbe. –

+0

Wenn Sie das Raster auf "none" setzen, wird nur die Hintergrundfarbe verwendet, so wie Sie es verlangt haben. Wenn Sie gewünscht hätten, dass es sich um eine andere Farbe handelt, können Sie natürlich eine andere, teilweise transparente Farbe wählen. Jede Farbe kann eine Transparenz (Alpha) haben. –

+0

Ich überprüfte auf diese Weise, es zeigt immer noch in Sicht basierte Tabellenansicht :( –

0

Vielleicht könnte ich erwähnen, dass in sichtbasierten Tabellen NSTableRowView für das Zeichnen der Trennzeichen zuständig ist. Also im Inspector für die Tabelle setzen Sie das Raster auf "None" und implementieren drawSeparatorInRect: in Ihrer NSTableRowView-Unterklasse, was in Ihrem Fall bedeuten würde, dass es leer bleibt.

+0

ja Ihr Punkt der Unterklasse ist richtig. Aber ich habe es ohne diesen Overhead gemacht. Wie du in meiner Lösung gesehen hast. –

+3

Wenn Sie Rasteransichten in NSTableView deaktivieren, wird drawSeparatorInRect: nicht aufgerufen. –

0

IMHO, die NSTableView apis sind ein bisschen seltsam. Beispiel: Wenn Sie das Raster auf "None" oder "NSTableViewSolidVerticalGridLineMask" setzen, wird drawSeparatorInRect: nicht aufgerufen. Wirklich !!!

So drawSeparatorInRect: wird OMLY aufgerufen, wenn NSTableViewSolidHorizontalGridLineMask

So wie i vertikalen Gitter anpassen ?? Nun, ich kann nicht leicht? Ohne in NSTableView Monster

+0

Ich habe eine Lösung für mein Problem gefunden, legen Sie die Tabellenansicht auf NSTableViewGridNone als überschreiben Sie die DrawRect: in Ihrem benutzerdefinierten NSTableRowView zu partiellen Grids oder etwas, was Sie bitte, ziehen, so dass nach alle Kakao ist sehr flexibel. –

2

Antwort für Interface Builder zu graben:

enter image description here