我想在NSForm
中單獨設置單元格背景顏色。我認爲這將是NSForm的子類化並覆蓋-drawCellAtRow:column:
。但-drawCellAtRow:column:
只在細胞獲得焦點時被調用。如何更改NSForm中的單個單元格背景顏色?
我試過在NSForm
上調用-setCellBackgroundColor
,但這改變了標題背景,而不是值。
有沒有我找不到的方法?
我想在NSForm
中單獨設置單元格背景顏色。我認爲這將是NSForm的子類化並覆蓋-drawCellAtRow:column:
。但-drawCellAtRow:column:
只在細胞獲得焦點時被調用。如何更改NSForm中的單個單元格背景顏色?
我試過在NSForm
上調用-setCellBackgroundColor
,但這改變了標題背景,而不是值。
有沒有我找不到的方法?
我認爲這對NSFormCell來說是不可能的。
我想的第一件事:
self.form.drawsCellBackground = YES;
self.form.cellBackgroundColor = [NSColor redColor];
這似乎繪製背景僅次於標籤。一些進一步的測試表明,單個NSFormCell跨越標籤和文本字段,並且背景都在後面。當文本字段在頂部繪製時,它自己的背景會覆蓋紅色。
接下來我將子類NSFormCell。唯一要調用的方法是-drawWithFrame:inView:
。該框架再次跨越標籤和文本字段。控制視圖是NSForm。如果我繪製自己的背景,然後調用[super drawWithFrame:inView:]
,它將如上所示,在標籤後面可見,但在文本字段後面不可見。如果我調用super並繪製背景,則會出現在兩者之上。
NSFormCell的實現不會調用-drawInteriorWithFrame:inView:
也不會提供另一個覆蓋點。
我嘗試設置highlighted
,並實施-highlightColorWithFrame:inView:
- 同樣的問題。
雖然我想了解這一切如何工作,我也嘗試了NSForm的子類。唯一與圖形相關的方法是-drawRect:
。從不調用這些方法:-drawCellAtIndex:
,-drawCellAtRow:column:
,-drawCell:
,-drawCellInside:
。
除了讓Apple解決這個問題外,我看到的唯一解決方案是嘗試使用NSForm的超類NSMatrix,或者只是使用標籤和文本字段。