macOS开发-NSButton(下-系统的其他类型)(UIbutton用于iOS)大全,欢迎大家提建议持续完善

按钮,主要用户通过NSControl控制点击、高亮等事件,同iOSUIButton

Button是一个用户界面对象,单击该按钮即可将操作消息发送到目标。它的大部分工作都由NSButtonCell处理,当NSButtonCell实例被单击时,捕获到鼠标按下事件,实例会将动作消息发送到其目标。
NSButton 定义于 AppKit 框架;
NSButton 继承 NSControl

按钮类型

cocoa为NSButton实现很多不同类型,按钮类型决定按钮的行为,按钮类型分为三类:

  • 按下按钮
  • 粘性按钮
  • 单选按钮和复选框
这是最简单的按钮,复制代码即可运行
#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 btnX = 100;
    CGFloat btnY = 100;
    CGFloat btnW = 80;
    CGFloat btnH = 44;
    self.btnnew.frame = CGRectMake(btnX, btnY, btnW, btnH);
    
    [_btnnew setTarget:self];
    [_btnnew setAction:@selector(btnOnClick)];//点击事件
  
}

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

@end

接下来,我们看看一些系统自带的属性有哪些,来丰富我们的开发

另见(上篇): https://www.cnblogs.com/gaozhang12345/p/9093449.html

继续,接下来我们来看看各种样式的按钮

先来一组截图

   

来吧开始上代码

typedef NS_ENUM(NSUInteger, NSButtonType) {
    NSButtonTypeMomentaryLight    = 0,
    NSButtonTypePushOnPushOff     = 1,
    NSButtonTypeToggle            = 2,
    NSButtonTypeSwitch            = 3,// 勾选框,不支持带图片,适合做多选
    NSButtonTypeRadio             = 4,// 勾选框,不支持带图片,适合做单选。
    NSButtonTypeMomentaryChange   = 5,// 文字会闪烁
    NSButtonTypeOnOff             = 6,
    NSButtonTypeMomentaryPushIn   = 7,
    NSButtonTypeAccelerator API_AVAILABLE(macos(10.10.3)) = 8,
    NSButtonTypeMultiLevelAccelerator API_AVAILABLE(macos(10.10.3)) = 9,
};

 1.这里是按照系统的NSButton生成按钮

-(void)viewDidLoad {
    [super viewDidLoad];
    
    for (int i=0; i<10; i++) {
        NSButton *btn = [[NSButton alloc] init];
        btn.tag = i;
        CGFloat btnX = 100;
        CGFloat btnY = i*44+10;
        CGFloat btnW = 80;
        CGFloat btnH = 44;
        [btn setButtonType:i];//NSButtonType
        btn.frame = CGRectMake(btnX, btnY, btnW, btnH);
        [btn setTitle:[NSString stringWithFormat:@"%i",i]];
        [self.view addSubview:btn];
    }

}

2.这里是按照类型生成按钮

// 创建带有标题和图像的标准按钮。在从左到右的本地化中,图像显示在标题的左侧。在从右到左的本地化中,它显示在右侧。
+ (instancetype)buttonWithTitle:(NSString *)title image:(NSImage *)image target:(nullable id)target action:(nullable SEL)action API_AVAILABLE(macos(10.12));
// 创建带有标题的标准按钮。
+ (instancetype)buttonWithTitle:(NSString *)title target:(nullable id)target action:(nullable SEL)action API_AVAILABLE(macos(10.12));
// 使用提供的图像创建标准按钮。设置图像的accessibilityDescription属性以确保此控件的可访问性。
+ (instancetype)buttonWithImage:(NSImage *)image target:(nullable id)target action:(nullable SEL)action API_AVAILABLE(macos(10.12));
// 使用提供的标题创建标准复选框。
+ (instancetype)checkboxWithTitle:(NSString *)title target:(nullable id)target action:(nullable SEL)action API_AVAILABLE(macos(10.12));
// 使用提供的标题创建标准单选按钮。s
+ (instancetype)radioButtonWithTitle:(NSsString *)title target:(nullable id)target action:(nullable SEL)action API_AVAILABLE(macos(10.12));

使用方法,(例子是其中一类,上面中的第二个)

-(void)viewDidLoad {
    [super viewDidLoad];
    // 创建带有标题的标准按钮。
    NSButton *button = [NSButton buttonWithTitle:@"使劲戳" target:self action:@selector(buttonClick:)];
    button.frame = CGRectMake(0, 0, 80, 40);
    [self.view addSubview:button];

}

- (void) buttonClick{
    // 处理点击事件
    NSLog(@"点击了我");
}

 

 

 

 

 

 

 

 

 

 

posted on 2022-04-15 09:57  高彰  阅读(387)  评论(0编辑  收藏  举报

导航