MAC OSX - NSButton

  1. 添加点击事件:
    mac添加点击事件代码方法需要同时设置两个方法:
[self setTarget:targetObject ];
[self setAction: @selector(buttonClick:)];
  1. 改变文字颜色:
    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];
}
  1. 改变背景颜色:
    mac的按钮不能像iOS一样直接设置背景颜色[self setBackgroundColor:],需要在layer层上设置
self.wantsLayer = YES;
self.layer.backgroundColor = [NSColor blueColor].CGColor;
  1. 点击不高亮:
 [(NSButtonCell *)self.cell setHighlightsBy:NSNoCellMask];
  1. 按钮不可点击:
    直接设置enabled = NO。不需要像iOS一样再手动设置按钮的文字颜色,mac会自动变成灰色文字。

  2. 不同状态的样式:
    设置按钮正常状态和点击后的图片不同,设置buttonType为Toggle,设置image和alternateImage,这样在正常状态就显示image的图片,在点击后就显示alternateImage的图片;
    设置按钮正常状态和点击时的图片不同,设置buttonType为change,设置image和alternateImage,这样在正常状态就显示image的图片,在点击时就显示alternateImage的图片;
    自定义类似系统关闭按钮那样的效果,就要自定义一个NSButton的子类,重写mouseDown,mouseEnter,mouseExit等方法。

  3. 鼠标悬停在按钮上出现提示文字:

self.toolTip = @"提示的文字";
  1. 设置按钮状态
    button.state  = NSControlStateValueOn;
一个NSButton的例子
    NSButton *chatBtn = [[NSButton alloc]initWithFrame:NSMakeRect(22, 420, 26, 26)];
    //设置按钮正常状态和点击后的图片不同,设置buttonType为Toggle,设置image和alternateImage
    [chatBtn setButtonType:NSButtonTypeToggle];
    [chatBtn setImage:[NSImage imageNamed:@"tab_chat"]];
    [chatBtn setAlternateImage:[NSImage imageNamed:@"tab_chat_selected"]];
    [chatBtn setImageScaling:NSImageScaleAxesIndependently];
    [chatBtn setTitle:@""];
    [chatBtn setBordered:false];  //不显示边框
    //裁剪成圆形
    [chatBtn setWantsLayer:true];
    chatBtn.layer.masksToBounds = true;
    chatBtn.layer.cornerRadius = 13;
    chatBtn.state  = NSControlStateValueOn;    //设置按钮状态
    [chatBtn setTarget:self];
    [chatBtn setAction:@selector(clickChatBtn:)];
    [self.leftMenuView addSubview:chatBtn];

    - (void)clickChatBtn:(id)sender {
        NSLog(@"clickChatBtn");
    }

链接:https://www.jianshu.com/p/c09c715b1617

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 陈奕迅十年 方力申邓丽欣分手一事,轰动一时,那句,请继续相信爱情,你们愿意吗?十年是多长时间?是十年之前,我不认识...
    m_eing阅读 1,287评论 0 0
  • 莱昂纳多·迪卡普里奥,1974年11月11日出生于美国加利福尼亚州洛杉矶,美国影视演员、制作人。凭借电影《荒野猎人...
    世图好书阅读 3,499评论 0 1
  • 2019.1.10 星期四 天气小雪 早上起床推门一看下来一场小雪,跑完步回家,因为孩子爷爷昨晚值班...
    宝贝一生健康阅读 1,293评论 0 0
  • 闹铃四点四十五 早晨起床很辛苦 一天到晚心里急 搞事搞得汗直滴 别人千块我及半 肚子饿了吃冷饭 日色西沉天不早 蚊...
    雷霆钧阅读 2,905评论 5 11
  • 第一次去再书房,还是想买本书作个纪念。一本《南京传》便从一排排书脊中脱颖而出,可能这就是我与一本书的缘分。这是我见...
    焦桐响阅读 1,085评论 0 0