2016-07-13 6 views
0

サイドバースタイルのアウトラインビューでは、outlineView:didAddRowView:row:に渡された行ビューでbackgroundColorを白に設定すると、行の内容を描画するだけです。サブビューの下では、通常の背景がまだ表示されます。白い線を描くにはどうすればよいですか?NSTableRowView backgroundColorはサブビューの周りのみを描画します

row screenshot

+0

あなたのツリーを持つビューにバックアップされたビューレイヤを作成してみてください。またはビューのスタック内の一部のビュー。多分窓全体でさえ。私は以前それを見た。問題は、サイドバースタイルがレイヤーバックされたエフェクトビューを使用することです。したがって、レンダリングにはいくつかの衝突があります。 –

答えて

1

Eugene Mankovskiが指摘したように、あなたは、バックアップされたビュー層をしなければなりません。このスニペットはあなたを助けます。

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 
     } 
    } 
} 

あなたの意見では、このようにアクセスしてください。

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

それは私のためには機能しません - 背景色は描画されません。 – Uncommon

+0

@Uncommonこれをどのビューに適用していますか? NSOutlineView? –

+0

はい、サイドバースタイルのNSOutlineViewです。 – Uncommon

関連する問題