2016-07-13 22 views
0

In einer Sidebar Style-Gliederungsansicht, wenn ich backgroundColor in der Zeilenansicht, die an outlineView:didAddRowView:row: übergeben wurde, weiß, zeichnet es nur um den Inhalt der Zeile. Unter den Unteransichten wird weiterhin der reguläre Hintergrund angezeigt. Wie bekomme ich nur die ganze Reihe, um weiß zu zeichnen?NSTableRowView backgroundColor zeichnet nur Subviews

row screenshot

+0

Versuchen Sie, mit dem Erstellen von View-Layer-Backed zu der Ansicht mit Ihrem Baum zu spielen. Oder einige der Ansichten im Stapel von Ansichten. Vielleicht sogar ganzes Fenster. Das habe ich schon mal gesehen. Das Problem ist, dass der Sidebar-Stil eine Effektansicht verwendet, die Layer-gestützt ist. Es gibt also eine Kollision beim Rendern. –

Antwort

1

Wie Eugene Mankovski hingewiesen, müssen Sie unterstützt die Ansicht Schicht machen. Dieses Snippet wird dir helfen.

extension NSView { 

    var customBackgroundColor: NSColor? { 
     get { 
      if let colorRef = self.layer?.backgroundColor { 
       return NSColor(CGColor: colorRef) 
      } else { 
       return nil 
      } 
     } 
     set { 
      self.wantsLayer = true 
      self.layer?.backgroundColor = newValue?.CGColor 
     } 
    } 
} 

Und greifen Sie so in Ihrer Ansicht.

self.yourView.customBackgroundColor = NSColor.lightGrayColor() 
+0

Das geht bei mir nicht - die Hintergrundfarbe wird nicht gezeichnet. – Uncommon

+0

@Uncommon Sie wenden diese auf welche Ansicht an? NSOutlineView? –

+0

Ja, es ist ein Sidebar-Stil NSOutlineView. – Uncommon

Verwandte Themen