2014-03-25 155 views
1

我在筆尖製作了一個NSTableCellView,它的textField佔據了整個空間,它對於顯示文本和跟蹤列的大小非常有用。如何爲NSTableCellView設置背景顏色?

現在我希望能夠在特定的情況下爲其設置一個堅實的背景色(即不是所有的單元格)。我該怎麼做呢?

我認爲這就像this question,除了那裏的解決方案沒有爲我做任何事情,我也不能提出任何接近它的方法。

我試圖讓我的-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: ,但如果這個工作將證明,我認爲至少東西這裏能夠繪製背景)

因爲我的文字佔據了整個小區來看,能夠把它放在任何文本字段或整個單元格視圖將會很好。

這看起來應該是一個簡單的設置,但沒有任何工作。我是否需要爲NSTableCellView創建子類才能擁有背景顏色?

+0

如果要設置背景色集,界面構建器中檢查器面板中的「backgound」顏色或代碼。在你的'UITextField'的情況下,'將它聲明爲一個屬性並添加yourTextfield.backgroundColor = [UIColor blueColor]; 'viewdidLoad' – JSA986

+0

JSA986:我嘗試了IB(子彈#6)的背景顏色,它在這裏沒有做任何事情。此外,這是OS X(NSTableCellView),而不是iOS。 – user3404855

回答

3

我會推薦創建一個NSTableCellView的子類。它有助於創建一個可重用的組件(您甚至可以添加一個漸變以使其看起來不同)並分離責任。 您可以使用這個簡單的代碼並在NSTableCellView中更改類。

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

    [[NSColor redColor] set]; 

     NSRectFill(bounds); 

} 
+0

保存圖形上下文有什麼意義? – user3404855

+0

我從我的一個自定義類中複製並粘貼了它(這比我粘貼的更多),所以即使刪除它也可以理解更多的理解,請參閱此鏈接https://developer.apple.com/library/mac /documentation/cocoa/conceptual/CocoaDrawingGuide/GraphicsContexts/GraphicsContexts.html –