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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,298评论 5 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,706评论 6 30
  • 转载:http://www.jianshu.com/p/32fcadd12108 每个UIView有一个伙伴称为l...
    F麦子阅读 6,621评论 0 13
  • 转自:http://www.code4app.com/blog-866962-1317.html1、设置UILab...
    MMOTE阅读 1,920评论 1 1
  • 很多时候,我们设立了一个目标,确往往难以达成,事后回想起来,会解释说:是有人找我聊另外的事,又或者说当时做到一半没...
    碎炎星痕阅读 198评论 0 0

友情链接更多精彩内容