簡體   English   中英

如何更改NSTableCellView中NSTextField的突出顯示顏色?

[英]How can you change the highlight color of a NSTextField within a NSTableCellView?

在情節NSTableCellView ,當我將NSTableCellView中的NSTextField的文本顏色設置為Control Text Color ,顏色變為黑色,而選中/突出顯示該單元格的顏色將變為白色。 取消選擇時,顏色將恢復為黑色。 您可以免費獲得所有這些行為。

我在默認情況下創建了另一個文本字段,該字段與iOS相似(請參見下圖中的標簽Game)。 我將“文字顏色”更改為灰色,並且一切正常。 但是,當我現在選擇/突出顯示該單元格時,顏色仍為灰色,並且不會交換為白色。 如何通過情節提要獲得這種行為? 如果不可能,通過代碼?

在此處輸入圖片說明

沒有自動獲得所需內容的方法。 您看到的帶有黑色標簽的自動行為是由NSTextFieldCell (或其超類之一,如NSCell )實現的。 它是通過將單元格的backgroundStyleNSBackgroundStyleDark 細胞的backgroundStyle被設置NSTableCellView當自己的backgroundStyle設置。 NSTableRowViewinteriorBackgroundStyle更改時, NSTableCellViewbackgroundStyle會由NSTableRowView設置,而在設置其其他屬性(如selectedemphasized時會發生這種情況。

無論如何,如果單元格的textColor[NSColor controlTextColor]或具有相等的RGB值,則該單元格只會自動更改其繪制的顏色。 因此,它不適用於您的灰色標簽。

您可以實現NSTableCellViewNSTextField的自定義子類。 您的類將實現(對於NSTableCellView的子類NSTableCellView-setBackgroundStyle: 在您的方法中,您可以檢查正在設置的樣式並更改文本字段的textColor 如果它是替代,請調用super。 (盡管NSTextField當前未實現backgroundStyle屬性,但將來可能會實現。Apple表示將為控件僅在單元格類中存在的方法添加Cover方法。因此, if ([NSTextField instancesRespondToSelector:@selector(setBackgroundStyle:)]) [super setBackgroundStyle:backgroundStyle];以確保將來安全。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM