• 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(@"点击了我");
    }
  • 相关阅读:
    【SQL】语句综合练习
    【Java基础】static关键字
    【SQL】定义约束
    【SQL】数据定义语言(DDL)
    【SQL】事务处理语言(TCL)
    Stream流
    线程池(重点)
    CountDownLatch CyclicBarrier Semaphore
    集合线程安全
    20210128 寻找数组的中心索引
  • 原文地址:https://www.cnblogs.com/gaozhang12345/p/16098538.html
Copyright © 2020-2023  润新知