我在Mac應用程序中有一個NSButton,它的顏色我想以編程方式更改,但沒有任何我嘗試過似乎工作。我試圖在NSButtonCell上創建一個輸出,並在那裏設置背景顏色,但這也不起作用。任何代碼片段都會有所幫助。更改NSButton的背景顏色
回答
標準Aqua(丸形)按鈕由系統繪製。他們沒有背景色。事實上,它們是由可可縫合在一起以形成一致的按鈕圖像的圖像組成的。所以Cocoa無法將圖像重新着色成您喜歡的顏色。只有默認按鈕(將Return設置爲等效鍵的那個按鈕)將具有藍色脈衝背景。
它聽起來像你想要做的將涉及到子類NSButtonCell
和做你自己的繪圖。如果您想重新着色按鈕圖像以獲得所需的效果,可以使用出色的Theme Park實用程序提取Apple的按鈕圖像副本並使用它們。我承認自己做了這些,以便「竊取」某些不可訪問的界面元素,例如iTunes中的滾動器。
假設一切都連接在您的IB無邊界按鈕。從setBackgroundColor文檔
// *.h file
IBOutlet NSButton* myButton;
// *.m file
[[myButton cell] setBackgroundColor:[NSColor redColor]];
注:
「的背景顏色僅繪製無邊界的按鈕時使用。」
如果這不會爲你做,那麼你需要重寫NSButton並自己實現繪圖。
祝你好運。
這:造型,從界面生成器的在我的大部分窗戶上效果很好。任何想法爲什麼它不能在NSWindow上使用NSToolbar來交換它的NSViews?那些可交換的NSViews上的按鈕似乎完全不受背景色的影響,但我可以改變它們的文本顏色就好了( – valheru 2013-07-29 20:15:18
這似乎不適用於swift,我did'n 't see the setbackgroundcolor method – 2018-01-23 12:53:49
NSButtonCell上的屬性在Swift中仍然存在,應該像`(button.cell as?NSButtonCell)?. backgroundColor = NSColor.red` – Mark 2018-01-23 15:51:23
的UIElement(元素是什麼Like按鈕,查看....)
的UIElement * VARNAME;
[varname setBackgroundColor:[UIColor colorWithRed:0.8 green:0.8 blue:0.6 alpha:1.0]];
例如: UIButton * pButton;
[pButton setBackgroundColor:[UIColor colorWithRed:0.8 green:0.8 blue:0.6 alpha:1.0]];
這將無助於NSButton。 – 2010-07-27 11:31:41
馬克的回答是正確的。但是,如果通過代碼實現它會讓你感到混亂,那麼另一種方法是直接在界面構建器中進行設置。
- 找到interfaceBuilder中的按鈕並點擊它。
- 在界面構建器的對象瀏覽器部分,您會看到您單擊的按鈕上有一個下拉菜單圖標。點擊它。它會顯示NSButton的NSButtonCell。點擊它。
- 選中NSButtonCell後,單擊Identity-Inspector。
- 在身份檢查員尋找名爲
User Defined Runtime Attributes
- 部分點擊小加號(+)來添加一個值。價值將顯示有3個屬性。 (A)的keyPath (B)類型(C)值
- 更改的keyPath到:
backgroundColor
。將類型更改爲:Color
。將值更改爲:您想要什麼顏色(將顯示顏色選擇器)
完成。
這裏是另一種可能的方式做到這一點:
let button = NSButton()
button.title = ""
button.bezelStyle = .texturedSquare
button.isBordered = false //Important
button.wantsLayer = true
button.layer?.backgroundColor = NSColor.red.cgColor
感謝這些偉大的答案。 我編譯了一個NSButton子類,可以很容易地設置背景顏色,邊框屬性(顏色,寬度,角落)和標題屬性(顏色,字體)。
隨意使用: https://github.com/philfung/osx-dudley/blob/master/DudNSButton.swift
一種方法是創建的按鈕後面的視圖,並設置的所述顏色。這將創建具有相同框架的視圖,並將按鈕放在視圖頂部。我在按鈕上使用了一個標籤,以確保我們只添加一次視圖,因此可以在繪製UI時重複調用該方法。
我已經包含了設置文本顏色的代碼。
按照需要更改顏色和Alpha:
NSColor *colour = [NSColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:0.5] ;
[self styleButton:button colour:colour] ;
-(void) styleButton:(NSButton *)button colour:(NSColor *)colour {
[self setButton:button fontColor:[NSColor whiteColor]];
if(button.tag == 9901) return ;
button.bezelStyle = NSBezelStyleTexturedSquare ;
[button setBordered:NO];
NSView *b2 = [[NSView alloc] initWithFrame:button.frame] ;
[button.superview addSubview:b2] ;
b2.layer.backgroundColor = colour.CGColor;
[button removeFromSuperview];
[b2.superview addSubview:button];
button.tag = 9901 ;
}
-(void) setButton:(NSButton *)button fontColor:(NSColor *)color {
NSMutableAttributedString *colorTitle = [[NSMutableAttributedString alloc] initWithAttributedString:[button attributedTitle]];
[colorTitle addAttribute:NSForegroundColorAttributeName value:color range:NSMakeRange(0, button.attributedTitle.length)];
[button setAttributedTitle:colorTitle];
}
我已經創建了一個NSButton
子類,稱爲FlatButton
,使得它超級容易改變按鈕的背景顏色,文本顏色,圖標顏色,邊框和其他類型
- 1. 更改背景顏色3
- 2. jqueryMobile更改背景顏色
- 3. 更改背景顏色tabhost
- 4. 更改UIButton背景顏色
- 5. 更改背景顏色8
- 6. WL.SimpleDialog更改背景顏色
- 7. 更改背景顏色
- 8. UICollectionViewCell更改背景顏色
- 9. 更改QLPreviewController背景顏色
- 10. 更改背景顏色
- 11. 更改UIAlertcontroller背景顏色
- 12. 更改TToolBar背景顏色
- 13. Gnuplot - 更改背景顏色
- 14. select2更改背景顏色
- 15. 更改fancybox2背景顏色
- 16. 更改背景顏色
- 17. 更改DIV背景顏色
- 18. 更改背景顏色
- 19. 更改Listitem背景顏色
- 20. QMenu更改背景顏色
- 21. 更改背景顏色
- 22. 更改HighCharts背景顏色?
- 23. 更改背景顏色
- 24. model.addrow()更改背景顏色
- 25. 更改背景顏色
- 26. 更改UITableViewController背景顏色
- 27. 更改背景顏色
- 28. Bootstrap:更改背景顏色
- 29. NSButton設置背景顏色macOS 10.12
- 30. 更改UITabBar的色調/背景顏色
這就解釋了爲什麼我不能修改背景主題公園是真正的寶石 – aleemb 2009-06-20 16:32:37
任何想法如何做到這一點在山獅?主題公園需要豹。 – 2012-12-10 18:46:49