MAC 开发程序员

NSButton常用详解(修改背景色,添加背景图片)

2017-11-09  本文已影响102人  topws1

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时显示的图片。

如果以上的技巧仍然没能满足你,你可以留言给我

上一篇下一篇

猜你喜欢

热点阅读