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
0
A
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()
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. –