1

私は nib で NSTableCellView を作成しました。これは textField がスペース全体を占めており、テキストの表示と列のサイズの追跡に最適です。

ここで、特定のケース (つまり、すべてのセルではなく) で、無地の背景色を設定できるようにしたいと考えています。どうすればいいですか?

私はそれがこの質問のようなものだと思いますが、解決策が私には何もしなかったことを除いて、それに近いものを思いつくこともできません。

自分なりの-tableView:viewForTableColumn:row:方法を作ってみた...

  • cellview.layer.backgroundColor を設定します
  • cellview.wantsLayer=YES を設定します (レイヤーがあることを確認します)
  • cellview.layer.opaque=YES および cellview.layer.opacity=1.0 を設定します
  • cellview.textField.backgroundColor を設定します
  • 設定 cellview.textField.drawsBackground=YES
  • ペン先で、テーブル セル ビューのテキスト フィールドについて、[背景を描画] をオンにし、[背景] ポップアップを設定します (これは、-tableView:viewForTableColumn:row: で必要なセルだけでなく、すべてのテーブル セルに対して永続的になりますが、これが機能する場合、少なくともここにある何かが背景をペイントできることを私に示します)

私のテキストはセル ビュー全体を占めるので、textField またはセル ビュー全体のいずれかに設定できれば問題ありません。

これはどこかで簡単な設定のように思えますが、何も機能しません。背景色を付けるためだけに NSTableCellView をサブクラス化する必要がありますか?

4

1 に答える 1

3

NSTableCellView のサブクラスを作成することをお勧めします。再利用可能なコンポーネントを作成し (グラデーションを追加して外観を変えることもできます)、責任を分離するのに役立ちます。この単純なコードを使用して、NSTableCellView のクラスを変更できます。

- (void)drawRect:(NSRect)dirtyRect
{        
    NSRect bounds = [self bounds];

    [[NSColor redColor] set];

        NSRectFill(bounds);

}
于 2014-03-26T00:13:01.910 に答える