按钮,主要用户通过NSControl
控制点击、高亮等事件,同iOS
的UIButton
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(@"点击了我"); }