Maybe 你和我一样,刚转入MAC开发,并且需要使用NSButton做一些操作,正常来讲系统的NSButton满足不了我们的需求,所有我这里就把自己遇到的问题及解决方式记录下来,或许能帮到你。
0、NSButton的基本属性都可以在XIB中找到,大家可以自己摸索下
1、NSButton的高度修改,如果你遇到了NSButton的高度被锁定无法修改,你可以试试把它的Style修改成Square,或者其他的样式
2、有了高度之后,你就会想如何去修改它的样式,如果仅仅是想修改它的圆角,变得好看一些,那很简单,跟iOS设置layer一样
self.layer.masksToBounds = YES;
self.layer.cornerRadius = 3.0f;
3、你可能不仅仅要修改它的圆角还有背景颜色和文字颜色,这时你可以通过重绘的方式来解决
- (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:@"注册" attributes:attrButton];
[btnString drawInRect:NSMakeRect(0, 5, dirtyRect.size.width, dirtyRect.size.height)];
self.layer.masksToBounds = YES;
self.layer.cornerRadius = 3.0f;
}
(备注:重绘时你可以通过判断NSButton的enabled属性,来绘制不同的颜色及文字,当你修改NSButton的enabled时,系统会自动帮你调用这个drawRect方法)
4、如果你不想设置颜色,或者有一些需求类似于CheckBox,但是需要用自己样式,这时你就可以使用setImage和setAlternateImage来设置你的图片,后者是当NSButton的state为on时显示的图片。
如果以上的技巧仍然没能满足你,你可以留言给我