Maybe 你和我一樣坤候,剛轉(zhuǎn)入MAC開(kāi)發(fā)白筹,并且需要使用NSButton做一些操作徒河,正常來(lái)講系統(tǒng)的NSButton滿足不了我們的需求顽照,所有我這里就把自己遇到的問(wèn)題及解決方式記錄下來(lái)代兵,或許能幫到你植影。
0涎永、NSButton的基本屬性都可以在XIB中找到羡微,大家可以自己摸索下
1妈倔、NSButton的高度修改启涯,如果你遇到了NSButton的高度被鎖定無(wú)法修改结洼,你可以試試把它的Style修改成Square,或者其他的樣式
2蒸殿、有了高度之后宏所,你就會(huì)想如何去修改它的樣式爬骤,如果僅僅是想修改它的圓角霞玄,變得好看一些坷剧,那很簡(jiǎn)單惫企,跟iOS設(shè)置layer一樣
self.layer.masksToBounds = YES;
self.layer.cornerRadius = 3.0f;
3狞尔、你可能不僅僅要修改它的圓角還有背景顏色和文字顏色沪么,這時(shí)你可以通過(guò)重繪的方式來(lái)解決
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
//背景顏色
[CSRegisterMainColor set];
NSRectFill(dirtyRect);
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
[paraStyle setParagraphStyle:[NSParagraphStyle defaultParagraphStyle]];
[paraStyle setAlignment:NSTextAlignmentCenter];
//[paraStyle setLineBreakMode:NSLineBreakByTruncatingTail];
NSDictionary *attrButton = [NSDictionary dictionaryWithObjectsAndKeys:[NSFont fontWithName:@"Verdana" size:18], NSFontAttributeName, [NSColor colorWithCalibratedRed:255 green:255 blue:255 alpha:1], NSForegroundColorAttributeName, paraStyle, NSParagraphStyleAttributeName, nil];
NSAttributedString * btnString = [[NSAttributedString alloc] initWithString:@"注冊(cè)" attributes:attrButton];
[btnString drawInRect:NSMakeRect(0, 5, dirtyRect.size.width, dirtyRect.size.height)];
self.layer.masksToBounds = YES;
self.layer.cornerRadius = 3.0f;
}
(備注:重繪時(shí)你可以通過(guò)判斷NSButton的enabled屬性刊殉,來(lái)繪制不同的顏色及文字记焊,當(dāng)你修改NSButton的enabled時(shí)遍膜,系統(tǒng)會(huì)自動(dòng)幫你調(diào)用這個(gè)drawRect方法)
4、如果你不想設(shè)置顏色弛说,或者有一些需求類似于CheckBox木人,但是需要用自己樣式醒第,這時(shí)你就可以使用setImage和setAlternateImage來(lái)設(shè)置你的圖片稠曼,后者是當(dāng)NSButton的state為on時(shí)顯示的圖片。
如果以上的技巧仍然沒(méi)能滿足你蝗岖,你可以留言給我