簡體   English   中英

如何設置 NSButton OSX 的背景顏色

[英]how to set background color of NSButton OSX

我想設置 NSButton 的背景顏色。屬性檢查器中什么都沒有,所以我想知道是否有任何方法可以以編程方式完成它?

系統控件需要遵循Apple的外觀和感覺,因此您無法輕松更改背景顏色。 如果要完成此任務,則需要子類化NSButton並覆蓋drawRect:方法。 缺點是您還需要處理文本繪圖,以及可能基於按鈕狀態的不同渲染。

編輯。 實際上,你需要為繪圖內容子類化NSButtonCell類,更多信息可以在這里找到: https//developer.apple.com/library/prerelease/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSButtonCell_Class /index.html#//apple_ref/doc/uid/20000093-SW15

除了子類化之外,您可以使用這樣的層方法

NSButton *button = [[NSButton alloc] initWithFrame:frame];
[superView addSubView:button];
[button setWantsLayer:YES];
button.layer.backgroundColor = [NSColor blueColor].CGColor;

或者您可以使用指定的顏色制作圖像並將該圖像應用於Button。

我建議不要細胞亞類化。 單元格已棄用且正在退出。

NSButton允許您設置沒有邊框的圖像。

對NSView或NSControl進行子類化,自定義繪制和跟蹤鼠標事件的狀態以及活動的應用程序活動/窗口以繪制所有自定義狀態即使不是更好也是有效的。

單元格不知道AutoLayout,所以如果去單元格區域你應該小心。

像這樣使用NSButton的背景層:

buttonName.layer.backgroundColor = NSColor.redColor.CGColor;

在使用 macOS 11 或更高版本時,您可以在使用代碼中bezelStyle設置為.roundedregularSquare的按鈕時設置bezelColor屬性,或者在使用界面設計器時設置按鈕樣式為“Push”或“Bezel”。

let button = NSButton()
button.title = "Example"
button.bezelStyle = .rounded // or .regularSquare
button.bezelColor = .controlAccentColor

暫無
暫無

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

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