MAC开发--NSButton汇总
2017-11-17 本文已影响91人
背靠背的微笑
图片来自网络
以下记录关于按钮NSButton在项目中涉及到的需求:
1、添加点击事件:
有别于iOS的[self addTarget: action: forControlEvents:],mac添加点击事件代码方法需要同时设置两个方法:
[self setTarget:targetObject ];
[self setAction: @selector(buttonClick:)];
2、改变文字颜色:
mac的按钮不能像iOS一样直接设置文字颜色[self setTitleColor: forState:],需要如下设置
- (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一样直接设置背景颜色[self setBackgroundColor:],需要在layer层上设置
self.wantsLayer = YES;
self.layer.backgroundColor = [NSColor blueColor].CGColor;
4、点击不高亮:
[(NSButtonCell *)self.cell setHighlightsBy:NSNoCellMask];
5、按钮不可点击:
直接设置enabled = NO。不需要像iOS一样再手动设置按钮的文字颜色,mac会自动变成灰色文字。
6、不同状态的样式:
比如你要设置按钮正常状态和点击后的图片不同,设置buttonType为Toggle,设置image和alternateImage,这样在正常状态就显示image的图片,在点击后就显示alternateImage的图片;
比如你要设置按钮正常状态和点击时的图片不同,设置buttonType为change,设置image和alternateImage,这样在正常状态就显示image的图片,在点击时就显示alternateImage的图片;
如果你要自定义类似系统关闭按钮那样的效果,就要自定义一个NSButton的子类,重写mouseDown,mouseEnter,mouseExit等方法。
7、鼠标悬停在按钮上出现提示文字:
self.toolTip = @"提示的文字";