2012-04-18 82 views
2

在基於視圖NSTableView,您的自定義行和單元格的意見(的NSTableRowViewNSTableCellView子類)獲得他們的backgroundStyle屬性設置,讓你知道,如果背景是光線或主要黑暗(對於選定的突出顯示的行)。文本顏色基於視圖的NSTableView的

這甚至會傳遞給即時子視圖。

現在,表格單元格視圖的默認文本標籤對此進行了正確的反應,因此在深色背景下,文本將以合適的淺色顯示。

但是,添加NSTextField以提供額外文本(使用Interface Builder中的自定義文本顏色設置)不會自動遵守此約定。

是否有一種簡單的方法在API中讓文本字段播放更好,還是必須繼承它?

+0

它是如何,默認表格單元視圖的文本標籤對此起作用? – tofutim 2014-03-04 17:17:39

回答

3

只要繼承NSTableCellView然後實現的drawRect:

- (void)drawRect:(NSRect)dirtyRect 
{ 
    // Drawing code here. 
    if (self.backgroundStyle == NSBackgroundStyleDark) { 
     [yourTextFieldIVar setTextColor:[NSColor whiteColor]]; 
    } else if(self.backgroundStyle == NSBackgroundStyleLight) { 
     [yourTextFieldIVar setTextColor:[NSColor blackColor]]; 
    } 
} 
5

而是壓倒一切的drawRect,你也可以這樣做:

- (void)setBackgroundStyle:(NSBackgroundStyle)backgroundStyle { 
    NSColor *textColor = (backgroundStyle == NSBackgroundStyleDark) ? [NSColor windowBackgroundColor] : [NSColor controlShadowColor]; 
    self.detailTextField.textColor = textColor; 
    [super setBackgroundStyle:backgroundStyle]; 
} 

參見這裏:http://gentlebytes.com/blog/2011/08/30/view-based-table-views-in-lion-part-1-of-2/

相關問題