以下記錄關(guān)于按鈕NSButton在項(xiàng)目中涉及到的需求:
1、添加點(diǎn)擊事件:
有別于iOS的[self addTarget: action: forControlEvents:]其爵,mac添加點(diǎn)擊事件代碼方法需要同時(shí)設(shè)置兩個方法:
[self setTarget:targetObject ];
[self setAction: @selector(buttonClick:)];
2仰挣、改變文字顏色:
mac的按鈕不能像iOS一樣直接設(shè)置文字顏色[self setTitleColor: forState:]伴逸,需要如下設(shè)置
- (void)setButtonTitleColor:(NSColor *)color
{
NSMutableAttributedString *attrTitle = [[NSMutableAttributedString alloc] initWithAttributedString:[self attributedTitle]];
NSUInteger len = [attrTitle length];
NSRange range = NSMakeRange(0, len);
[attrTitle addAttribute:NSForegroundColorAttributeName
value:color
range:range];
[attrTitle fixAttributesInRange:range];
[self setAttributedTitle:attrTitle];
}
3、改變背景顏色:
mac的按鈕不能像iOS一樣直接設(shè)置背景顏色[self setBackgroundColor:]膘壶,需要在layer層上設(shè)置
self.wantsLayer = YES;
self.layer.backgroundColor = [NSColor blueColor].CGColor;
4错蝴、點(diǎn)擊不高亮:
[(NSButtonCell *)self.cell setHighlightsBy:NSNoCellMask];
5、按鈕不可點(diǎn)擊:
直接設(shè)置enabled = NO颓芭。不需要像iOS一樣再手動設(shè)置按鈕的文字顏色顷锰,mac會自動變成灰色文字。
6畜伐、不同狀態(tài)的樣式:
比如你要設(shè)置按鈕正常狀態(tài)和點(diǎn)擊后的圖片不同馍惹,設(shè)置buttonType為Toggle,設(shè)置image和alternateImage玛界,這樣在正常狀態(tài)就顯示image的圖片万矾,在點(diǎn)擊后就顯示alternateImage的圖片;
比如你要設(shè)置按鈕正常狀態(tài)和點(diǎn)擊時(shí)的圖片不同慎框,設(shè)置buttonType為change良狈,設(shè)置image和alternateImage,這樣在正常狀態(tài)就顯示image的圖片笨枯,在點(diǎn)擊時(shí)就顯示alternateImage的圖片薪丁;
如果你要自定義類似系統(tǒng)關(guān)閉按鈕那樣的效果遇西,就要自定義一個NSButton的子類,重寫mouseDown严嗜,mouseEnter粱檀,mouseExit等方法。
7漫玄、鼠標(biāo)懸停在按鈕上出現(xiàn)提示文字:
self.toolTip = @"提示的文字";