macOS NSButton(上-属性)(UIbutton用于iOS)大全,欢迎大家提建议持续完善

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"Hello world!");
//    设置按钮
    [self setbutton];
}
-(void)setbutton{
    NSButton *button = [[NSButton alloc]init];
    button.frame=CGRectMake(100, 100, 64, 64);
    [button setTitle:@"确认签收"];
    [button setTarget:self];
    [button setAction:@selector(buttonClick)];
    [self.view addSubview:button];
}
-(void)buttonClick{
    NSLog(@"你点击了切换模式");
}

 上面是小白模式,复制粘贴直接运行。

下面正式开发使用

#import "ViewController.h"

@interface ViewController ()
/** macos 按钮 */
@property(nonatomic,weak) NSButton *btnnew;
@end

@implementation ViewController

#pragma mark 懒加载 macos 按钮
- (NSButton *)btnnew {
    if (!_btnnew) {
        NSButton *btn = [[NSButton alloc] init];
        [self.view addSubview:btn];
        _btnnew = btn;
    }
    return _btnnew;
}

-(void)viewDidLoad {
    [super viewDidLoad];
    
    CGFloat BtnY = 100;
    CGFloat BtnW = 100;
    CGFloat BtnH = 50;
    CGFloat BtnX = 200;
    self.btnnew.frame = CGRectMake(BtnX, BtnY, BtnW, BtnH);
////////////////////////////////////////////////////////////////////////
//    macOS 按钮的属性
    //   1. 按钮文字这两种方式都可以
    _btnnew.title = @"标题1";
    [_btnnew setTitle:@"标题2"];

    //    2.按钮阴影部分
    _btnnew.layer.shadowOffset = CGSizeMake(1, 2);
    //    3.按钮带图标
    _btnnew.image = [NSImage imageNamed:@"dream"];
    
    //   4. 按钮触发的方法
    //方法1
    [_btnnew setTarget:self];
    [_btnnew setAction:@selector(btnOnClick)];
    //方法2
    _btnnew.target = self;
    _btnnew.action = @selector(btnOnClick);
    
    //    5.开启状态文字
    _btnnew.alternateTitle = @"选中";
    //   6. 开启状态图片
    _btnnew.alternateImage = [NSImage imageNamed:@"constellation"];
    //    7.按钮的状态
    _btnnew.state = 1;
    //    8.按钮图文位置
    _btnnew.imagePosition = NSImageBelow;
    //    9.按钮设置图片缩放
    _btnnew.imageScaling = NSImageScaleNone;
    //    10.按钮是否有边框
    _btnnew.bordered = YES;
    //    11.按钮是否透明
    _btnnew.transparent = NO;
    //    12以下设置的快捷键为:Shift + Command + P (如果设置的和系统的冲突,则不会触发,就好比微信的截图功能)
    //    快捷键
    _btnnew.keyEquivalent = @"P";
    //    快捷键掩码
    [_btnnew setKeyEquivalentModifierMask:NSEventModifierFlagShift];

/////////////////////////////////////////////////////////////////////////////////////////
    //   13. 按钮是否为高亮
    _btnnew.highlighted = YES;
    //   14. 按钮的tag值,这只是个标记值
    _btnnew.tag = 10;
    
    //    此处鸣谢客西电子提供参考
    //    15.设置按钮字体的颜色
// (1)一般方法
// 创始富文本 NSMutableAttributedString *Mstr = [[NSMutableAttributedString alloc]initWithAttributedString:[_btnnew attributedTitle]]; // 设置相关属性 NSUInteger len = [Mstr length];//长度 NSRange range = NSMakeRange(0, len);//长度区间 [Mstr addAttribute:NSForegroundColorAttributeName value:[NSColor redColor] range:range]; [Mstr fixAttributesInRange:range]; // 改变按键的富文本 [_btnnew setAttributedTitle:Mstr]; // 替换文字,替换的位置和替换的内容 [Mstr replaceCharactersInRange:NSMakeRange(0, 1) withString:@"666"];

//(2)
    // 1.无边框可以通过 contentTintColor 设置文字颜色
       button.bordered = NO;
       button.contentTintColor = NSColor.redColor;
    // 2.有边框
     NSMutableAttributedString *attrTitle = [[NSMutableAttributedString alloc] initWithAttributedString:[button attributedTitle]];
     [attrTitle addAttribute:NSForegroundColorAttributeName value:NSColor.redColor range:NSMakeRange(0, attrTitle.length)];
     [attrTitle fixAttributesInRange:NSMakeRange(0, attrTitle.length)];
     [_btnnew setAttributedTitle:attrTitle];
////////////////////////////////////////////////////////////////////////////////////
    //     16.改变按键背景颜色
    //     要先设置wnatLayer后才能设置颜色
    _btnnew.wantsLayer = YES;
    _btnnew.layer.backgroundColor = [NSColor blueColor].CGColor;
    //     17.设置为不可点击
    _btnnew.enabled = NO;

    //   18. 设置按下和弹起时显示的图片或开启状态和关闭状态时的图片
    //比如你要设置按钮正常状态和点击后的图片不同,设置buttonType为Toggle,设置image和
    //alternateImage,这样在正常状态就显示image的图片,在点击后就显示alternateImage的图片;
       [_btnnew setButtonType:NSButtonTypeToggle];
    _btnnew.image = [NSImage imageNamed:@"dream"];
    _btnnew.alternateImage = [NSImage imageNamed:@"dream"];
    
    //       比如你要设置按钮正常状态和点击时的图片不同,设置buttonType为change,设置image和
       //alternateImage,这样在正常状态就显示image的图片,在点击时就显示alternateImage的图片;
       [_btnnew setButtonType:NSButtonTypeMomentaryChange];
    _btnnew.image = [NSImage imageNamed:@"dream"];
    _btnnew.alternateImage = [NSImage imageNamed:@"dream"];
       //如果你要自定义类似系统关闭按钮那样的效果,就要自定义一个NSButton的子类,重写mouseDown,
       //mouseEnter,mouseExit等方法。

////////////////////////////////////////////////////////////////////////////////////
    //   19. 鼠标悬停在按钮上出现提示文字
        _btnnew.toolTip = @"提示的文字";
    //    20.切圆角  此处鸣谢fancy啊fancy
    //方法1
    _btnnew.layer.masksToBounds = YES;
    _btnnew.layer.cornerRadius = 30;
    //这里的30是你想设置的圆角大小,比如是一个40*40的正方形,那个设置成20就是一个圆,以此类推
    //方法2
    [_btnnew.layer setMasksToBounds:YES];
    [_btnnew.layer setCornerRadius:16];
    //这里的16是你想设置的圆角大小,比如是一个40*40的正方形,那个设置成20就是一个圆,以此类推

}


#pragma mark 按钮触发事件
- (void)btnOnClick{
    // 处理点击事件
    NSLog(@"点击了我");
}

 

大家按自己需求使用

posted on 2018-05-26 16:25  高彰  阅读(1487)  评论(0编辑  收藏  举报

导航