Mac开发云集iOS之MAC端开发Mac OSX开发

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 = @"提示的文字";
上一篇下一篇

猜你喜欢

热点阅读